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
作者:习惯沉淀
如果文中有误或对本文有不同的见解,欢迎在评论区留言。
如果觉得文章对你有帮助,请点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
扫码关注一线码农的学习见闻与思考。
回复"大数据","微服务","架构师","面试总结",获取更多学习资源!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步