MySql教程

mysql怎样优化调整innodb_log_buffer_size

本文主要是介绍mysql怎样优化调整innodb_log_buffer_size,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

官方文档并没有直接告诉如何调整 innodb_log_buffer_size 大小,

根据对mysql 的状态信息了解知道  innodb_log_buffer_size 跟 Innodb_os_log_written 和 Com_commit 状态有关系。

  1. Innodb_os_log_written: innodb 引擎redo log  多少个字节被写入
  2. Com_commit : 在autocommit = 0 时候 有多少个innodb 事务提交 ,如果autocommit = 1,innodb 事务不包括在Com_commit 中
  3. 以上参考: https://dev.mysql.com/doc/refman/5.7/en/server-status-variables.html#statvar_Com_xxx
  4. 在业务压力测试或者高峰时间段进行以下操作:
set global autocommit = 0;

SHOW GLOBAL STATUS LIKE 'Innodb_os_log_written';

 经过一段长时间.............

SHOW GLOBAL STATUS LIKE 'Com_commit';

通过以下公式计算平均每个事务要缓冲的平均数据量多少个bytes,前提你需要保留多长时间的redo log buffer

Innodb_os_log_written / Com_commit 

在业务高峰运行期间如果 Innodb_log_waits 值为0或接近0, innodb_log_buffer_size 可能太大,可以减少。
set @old_value := 0;
set @new_value := 0;
select VARIABLE_VALUE into @old_value from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Innodb_log_waits';
select SLEEP(时间);
select VARIABLE_VALUE into @new_value from information_schema.GLOBAL_STATUS where VARIABLE_NAME = 'Innodb_log_waits';
select @old_value;
select @new_value;

这篇关于mysql怎样优化调整innodb_log_buffer_size的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!