MySQL存储过程插入数据过慢处理方法(转)

在使用存储过程进行千万条数据的插入的时候,插入效率在每分钟七千条左右,这样算下来,需要几十个小时,所以找了一下优化的方法,除了对存储过程本身的优化,还有就是修改了MySQL的配置文件的部分参数

我做了以下几个参数的修改

  • innodb_log_file_size = 1024M

  日志组中的每个日志文件的大小,设置较大的值可以减少脏数据刷新到磁盘的次数

  • innodb_log_buffer_size = 256M  

将日志写入日志磁盘文件前的缓冲大小,默认是16M,设置较大的值可以使日志在缓冲时不需要被保存到磁盘,减少磁盘读取次数

  • innodb_flush_log_at_trx_commit = 0

将日志中的缓冲数据写入磁盘,默认为1,即每次提交事务都会写入磁盘,改为0后将减少写入磁盘的次数

  • innodb_buffer_pool_size = 4G

该值用来高速缓冲数据和索引内存缓冲大小,也是减少磁盘IO来增加速度,一般设置为物理存储的60%~70%

  • innodb_buffer_pool_instances = 4 

增加多个缓冲池,提高并行内存读写能力

  • innodb_write_io_threads = 8  &&  innodb_read_io_threads = 8

增加IO线程数,提高读写能力,根据机器的处理器来设置

  • innodb_io_capacity = 500

提高刷新脏页数量和合并插入数量,改善磁盘I/O处理能力,默认200

以上参数修改都是通过减少对磁盘的IO操作来实现的,包括关闭了MySQL默认的事务存储到磁盘的操作,增大缓冲区的容量,这样子容易造成MySQL服务器宕机的时候,数据大量丢失,建议不要在生产环境下修改这些配置,根据实际情况修改

本文转自:https://blog.csdn.net/qq_36182135/article/details/84854619

原文地址:https://www.cnblogs.com/yadongliang/p/13893023.html