如何进行mysql的innodb_flush_log_at_trx_commit参数分析

这期内容当中小编将会给大家带来有关如何进行mysql的innodb_flush_log_at_trx_commit参数分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

innodb_flush_log_at_trx_commit参数实验
1,首先设置sync_binlog为0,
mysql>  set global  sync_binlog=0;
Query OK, 0 rows affected (0.00 sec)

创建一个存储过程p1,往t表中进行五千次的插入,每次插入都提交
mysql> DELIMITER //  
mysql> CREATE PROCEDURE p1()
    -> begin
    ->  declare i int;
    ->  set i=0;
    ->  while i<5000 do
    ->     insert into t values(i);
    ->     set i=i+1;
    ->     commit;
    ->  end while;
    -> end;
    -> //
Query OK, 0 rows affected (0.00 sec)

2,现在该参数为2,即日志缓存区写到文件,但不会刷到磁盘上
插入5000条数据,时间是3.56秒
mysql> show variables like '%innodb_flush_log_at_trx%';
+——————————–+——-+
| Variable_name                  | Value |
+——————————–+——-+
| innodb_flush_log_at_trx_commit | 2     |
+——————————–+——-+
1 row in set (0.01 sec)

mysql> truncate t;
Query OK, 0 rows affected (0.02 sec)

mysql> call p1;
Query OK, 0 rows affected (3.56 sec)
3,现在该参数设置为1,即每次提交,日志缓存区写到日志文件,并刷到磁盘上
插入5000条数据,时间是6.21秒
mysql> set global innodb_flush_log_at_trx_commit=1;
Query OK, 0 rows affected (0.00 sec)

mysql> truncate t;
Query OK, 0 rows affected (0.02 sec)

mysql> call p1;
Query OK, 0 rows affected (6.21 sec)
4,现在参数设置为0,即日志缓存区每秒一次地写到日志文件,并刷到磁盘
但是事务提交的时候,不做任何操作。插入5000条数据3.18秒
mysql> set global innodb_flush_log_at_trx_commit=0;
Query OK, 0 rows affected (0.00 sec)

mysql> truncate t;
Query OK, 0 rows affected (0.02 sec)

mysql> call p1;
Query OK, 0 rows affected (3.18 sec)

上述就是小编为大家分享的如何进行mysql的innodb_flush_log_at_trx_commit参数分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/201935.html

(0)
上一篇 2021年11月25日
下一篇 2021年11月25日

相关推荐

发表回复

登录后才能评论