【MySQL】MySQL提高批量insert的性能
从网上搜寻各路大佬的部分解决方案整理而来。
一. 使用批量插入,将多条单独的 insert 合并成一次操作
即:insert into table values (a1, b1, c1), (a2, b2, c2);
解析:将多条 insert 合并后,减少MySQL日志量(即MySQL的 binlog 和 innodb 的事务日志),降低日志刷盘的数据量和频率,从而提高效率。通过合并多条 insert 语句,还能减少SQL语句的解析次数,减少和数据库的交互,减少了网络传输的IO。
二. 修改批量插入缓冲区大小参数: bulk_insert_buffer_size,调大批量插入的缓存
这个参数默认为 8M,例如设置成 100M
set global bulk_insert_buffer_size = 1024*1024*100;
三. 设置 innodb_flush_log_at_trx_commit = 0
相对于 innodb_flush_log_at_trx_commit = 1, 设置为 0 可以明显的提高导入的速度。
set global innodb_flush_log_at_trx_commit=0;
解析:
0: log buffer 中的数据将以每秒一次的频率写入到 log file 中,且同时会进行文件系统到磁盘的同步操作,但是每个事务的 commit 并不会触发任何的 log buffer 到 log file 的刷新或者从文件系统到磁盘的刷新操作。
1: 在每次事务提交的时候将 log buffer 中的数据都会写入到 log file,同时也会触发文件系统到磁盘的同步;
2: 事务提交会触发 log buffer 到 log file 的刷新,但并不会触发磁盘文件系统到磁盘的同步。此外,每秒会有一次文件系统到磁盘的同步操作。
四. 设置事务提交为 手动提交
因为 MySQL 事务默认是自动提交的(autocommit),这样每插入一条数据,都会进行一次 commit,所以通过手动提交事务,可以减少创建事务时的消耗。一般可以设置为 1000 条insert 提交一次。
#感谢您对电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格的认可,转载请说明来源于"电脑配置推荐网 - 最新i3 i5 i7组装电脑配置单推荐报价格
上一篇:Win7分割合并磁盘
推荐阅读
留言与评论(共有 13 条评论) |
本站网友 南京半山医院 | 16分钟前 发表 |
一. 使用批量插入,将多条单独的 insert 合并成一次操作 即:insert into table values (a1 | |
本站网友 脱胸 | 29分钟前 发表 |
从网上搜寻各路大佬的部分解决方案整理而来 | |
本站网友 精神病的症状 | 26分钟前 发表 |
(a2 | |
本站网友 数字防抖 | 14分钟前 发表 |
通过合并多条 insert 语句,还能减少SQL语句的解析次数,减少和数据库的交互,减少了网络传输的IO | |
本站网友 全身光子嫩肤价格 | 14分钟前 发表 |
bulk_insert_buffer_size,调大批量插入的缓存 这个参数默认为 8M,例如设置成 100M set global bulk_insert_buffer_size = 1024*1024*100; 三. 设置 innodb_flush_log_at_trx_commit = 0 相对于 innodb_flush_log_at_trx_commit = 1 | |
本站网友 神十一 | 30分钟前 发表 |
二. 修改批量插入缓冲区大小参数 | |
本站网友 金价下跌原因 | 26分钟前 发表 |
四. 设置事务提交为 手动提交 因为 MySQL 事务默认是自动提交的(autocommit),这样每插入一条数据,都会进行一次 commit,所以通过手动提交事务,可以减少创建事务时的消耗 | |
本站网友 痛经吃什么食物 | 20分钟前 发表 |
从网上搜寻各路大佬的部分解决方案整理而来 | |
本站网友 书香门第上河坊 | 9分钟前 发表 |
四. 设置事务提交为 手动提交 因为 MySQL 事务默认是自动提交的(autocommit),这样每插入一条数据,都会进行一次 commit,所以通过手动提交事务,可以减少创建事务时的消耗 | |
本站网友 熊猫快递 | 26分钟前 发表 |
此外,每秒会有一次文件系统到磁盘的同步操作 | |
本站网友 珊瑚湾畔 | 4分钟前 发表 |
此外,每秒会有一次文件系统到磁盘的同步操作 | |
本站网友 wt是什么意思 | 25分钟前 发表 |
从网上搜寻各路大佬的部分解决方案整理而来 |