您现在的位置是:首页 > 电脑 > 

【MySQL】MySQL提高批量insert的性能

2025-07-16 22:17:06
从网上搜寻各路大佬的部分解决方案整理而来。 一. 使用批量插入,将多条单独的 insert 合并成一次操作 即:insert into table values (a1, b1, c1), (a2, b2, c2); 解析:将多条 insert 合并后,减少MySQL日志量(即MySQL的 binlog 和 innodb 的事务日志

从网上搜寻各路大佬的部分解决方案整理而来。

一. 使用批量插入,将多条单独的 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组装电脑配置单推荐报价格

本文地址:http://www.dnpztj.cn/diannao/549523.html

相关标签:无
上传时间: 2023-06-29 02:05:11
留言与评论(共有 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分钟前 发表
从网上搜寻各路大佬的部分解决方案整理而来