怎样进行mysql的innodb_flush_log_at_trx_commit参数分析
发布时间:2021-12-18 14:05:24 所属栏目:MySql教程 来源:互联网
导读:这期内容当中小编将会给大家带来有关如何进行mysql的innodb_flush_log_at_trx_commit参数分析,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。 innodb_flush_log_at_trx_commit参数实验 1,首先设置sync_binlog为0, mys
这期内容当中小编将会给大家带来有关如何进行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参数分析了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。 (编辑:站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |