這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)如何進行MySQL的innodb_flush_log_at_trx_commit參數(shù)分析,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)建站!專注于網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、成都微信小程序、集團企業(yè)網(wǎng)站建設(shè)等服務(wù)項目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了華鎣免費建站歡迎大家使用!
innodb_flush_log_at_trx_commit參數(shù)實驗
1,首先設(shè)置sync_binlog為0,
mysql> set global sync_binlog=0;
Query OK, 0 rows affected (0.00 sec)
創(chuàng)建一個存儲過程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,現(xiàn)在該參數(shù)為2,即日志緩存區(qū)寫到文件,但不會刷到磁盤上
插入5000條數(shù)據(jù),時間是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,現(xiàn)在該參數(shù)設(shè)置為1,即每次提交,日志緩存區(qū)寫到日志文件,并刷到磁盤上
插入5000條數(shù)據(jù),時間是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,現(xiàn)在參數(shù)設(shè)置為0,即日志緩存區(qū)每秒一次地寫到日志文件,并刷到磁盤
但是事務(wù)提交的時候,不做任何操作。插入5000條數(shù)據(jù)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參數(shù)分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。