• Java mysql 实现JDBC百万级数据插入


    因为公司项目需要做一个excle快速导入到mysql功能,之前已经解决Java读取excle文件,但是因为文件有100w+的数据,插入mysql数据库很慢,1小时10w条,必须要做优化,后面写了批量插入1000条y一个批,但是速度还是很慢,查看数据库后发现mysql数据写入很慢,所以就对mysql数据做了写入优化,主要参考https://blog.csdn.net/qq_31065001/article/details/71519197

    对一般情况下mysql上百万数据读取和插入更新是没什么问题了,但到了上千万级就会出现很慢,下面我们来看mysql千万级数据库插入速度和读取速度的调整记录吧。

     

    (1)提高数据库插入性能中心思想:尽量将数据一次性写入到Data File和减少数据库的checkpoint 操作。这次修改了下面四个配置项: 
    1)将 innodb_flush_log_at_trx_commit 配置设定为0;按过往经验设定为0,插入速度会有很大提高。

    0: Write the log buffer to the log file and flush the log file every second, but do nothing at transaction commit. 
    1:the log buffer is written out to the log file at each transaction commit and the flush to disk operation is performed on the log file 
    2:the log buffer is written out to the file at each commit, but the flush to disk operation is not performed on it 
    2)将 innodb_autoextend_increment 配置由于默认8M 调整到 128M

    此配置项作用主要是当tablespace 空间已经满了后,需要MySQL系统需要自动扩展多少空间,每次tablespace 扩展都会让各个SQL 处于等待状态。增加自动扩展Size可以减少tablespace自动扩展次数。

    3)将 innodb_log_buffer_size 配置由于默认1M 调整到 16M

    此配置项作用设定innodb 数据库引擎写日志缓存区;将此缓存段增大可以减少数据库写数据文件次数。

    4)将 innodb_log_file_size 配置由于默认 8M 调整到 128M

    此配置项作用设定innodb 数据库引擎UNDO日志的大小;从而减少数据库checkpoint操作。

    经过以上调整,系统插入速度由于原来10分钟几万条提升至1秒1W左右;注:以上参数调整,需要根据不同机器来进行实际调整。特别是 innodb_flush_log_at_trx_commit、innodb_log_buffer_size和 innodb_log_file_size 需要谨慎调整;因为涉及MySQL本身的容灾处理。

    修改完之后发现插入速度又提升但是并没有达到帖子里说的10000/秒,看了下数据库数据  10000条数据确实是同时插入的,就打印了一下代码的执行时间,发现

    pstm.executeBatch();
    时间主要消耗在这里,然后根据https://blog.csdn.net/lgh1117/article/details/80212924这篇帖子对mysql连接串加上rewriteBatchedStatements=true参数,执行代码 插入51w数据只需要52s;OK;
  • 相关阅读:
    关于SubSonic3.0查询或更新时出现System.NullReferenceException异常的处理
    SubSonic3.0使用例子
    Hive:ORC File Format存储格式详解
    HiveQL之Sort by、Distribute by、Cluster by、Order By详解
    Hive之import和export使用详解
    手动安装cloudera manager 5.x(tar包方式)详解
    初次安装hive-2.1.0启动报错问题解决方法
    LAMP下安装zabbix流水
    ESXI虚拟机磁盘管理(精简-厚置-精简)
    VMware esxi 5.5装机方案
  • 原文地址:https://www.cnblogs.com/yins/p/9908824.html
Copyright © 2020-2023  润新知