8.mysql导入慢问题处理-日志异步刷磁盘

文章介绍了如何在MySQL中临时修改innodb_flush_log_at_trx_commit和sync_binlog参数以优化事务处理和日志同步。参数innodb_flush_log_at_trx_commit控制事务提交时的日志写入与磁盘同步策略,而sync_binlog设置了批量事务刷入磁盘的频率。调整这些参数可以在性能和数据安全性间找到平衡点。

--检查初始值。
show variables like 'innodb_flush_log_at_trx_commit';
show variables like 'sync_binlog';

# 1.进入MySQL命令行 临时修改这两个参数
set global innodb_flush_log_at_trx_commit = 2;
set global sync_binlog = 500;
 
# 2.执行SQL脚本导入
mysql -uroot -pxxxxxx testdb < testdb.sql
 
# 3.导入完成 再把参数改回来
set global innodb_flush_log_at_trx_commit = 1;
set global sync_binlog = 1;
 

参数说明:

MySQL 在每写 N次 二进制日志binary log时,会使用fdatasync()函数将它的写二进制日志binary log同步到磁盘中去。
(1)如果innodb_flush_log_at_trx_commit设置为0,log buffer将每秒一次地写入log file中,并且log file的flush(刷到磁盘)操作同时进行。
该模式下,在事务提交的时候,不会主动触发写入磁盘的操作。


(2)如果innodb_flush_log_at_trx_commit设置为1,每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去.


(3)如果innodb_flush_log_at_trx_commit设置为2,每次事务提交时MySQL都会把log buffer的数据写入log file.但是flush(刷到磁盘)操作并不会同时进行。
该模式下,MySQL会每秒执行一次 flush(刷到磁盘)操作。

sync_binlog :批量刷新的事务数,设置的越大,每次批量刷入磁盘的数据越多,刷新次数越少。但是也不是越大越好,设置一个合适的值即可。一般设置:500~1000,可以提升性能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值