innodb_flush_log_at_trx_commit不同参数值下的性能测试
来源:互联网 发布:淘宝能不能换身份证 编辑:程序博客网 时间:2024/06/05 05:28
一.基本信息
10.0.20-MariaDB-log
sync_binlog=0
tx_isolation=READ-COMMITTED
binlog_format=ROW
innodb_io_capacity=1200
innodb_buffer_pool_size=21G
os:redhat 6.3 64位
vmware虚拟机
cpu:8个
内存:64G
测试innodb_flush_log_at_trx_commit参数分别在2、0、1下对一个表插入50W行数据所花时间。
二.场景一:innodb_flush_log_at_trx_commit=2下的性能
1.建立测试表和测试procedure
use test;
create table test_load (
a INT,
b CHAR(80)
) ENGINE=INNODB;
DELIMITER //
CREATE PROCEDURE p_load(count INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80) DEFAULT REPEAT('a',80);
WHILE s <= count DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s = s+1;
END WHILE;
END;
2.测试参数:innodb_flush_log_at_trx_commit=2
(product)root@localhost [(none)]> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 2 |
+--------------------------------+-------+
1 row in set (0.01 sec)
(product)root@localhost [(none)]> use test;
Database changed
(product)root@localhost [test]> CALL p_load(500000);
Query OK, 0 rows affected (1 min 0.35 sec)
上面执行时间为1分0.35秒.
每轮测试完成后,需要作如下处理:
1.drop table test_load和drop PROCEDURE p_load
2.重启mysqld实例,并且用下面的方法删除系统cache,释放swap(如果用到了swap的话),甚至可以重启整个OS。
3.sync -- 将脏数据刷新到磁盘
4.echo 3 > /proc/sys/vm/drop_caches -- 清除OS Cache
5.swapoff -a && swapon -a
三.场景二:innodb_flush_log_at_trx_commit=0下的性能
1.建立测试表和测试procedure
use test;
create table test_load (
a INT,
b CHAR(80)
) ENGINE=INNODB;
DELIMITER //
CREATE PROCEDURE p_load(count INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80) DEFAULT REPEAT('a',80);
WHILE s <= count DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s = s+1;
END WHILE;
END;
//
2.测试参数:innodb_flush_log_at_trx_commit=0
(product)root@localhost [test]> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 0 |
+--------------------------------+-------+
1 row in set (0.00 sec)
(product)root@localhost [test]> CALL p_load(500000);
Query OK, 0 rows affected (25.08 sec)
上面执行时间为25.08秒.
每轮测试完成后,需要作如下处理:
1.drop table test_load和drop PROCEDURE p_load
2.重启mysqld实例,并且用下面的方法删除系统cache,释放swap(如果用到了swap的话),甚至可以重启整个OS。
3.sync -- 将脏数据刷新到磁盘
4.echo 3 > /proc/sys/vm/drop_caches -- 清除OS Cache
5.swapoff -a && swapon -a
四.场景三:innodb_flush_log_at_trx_commit=1下的性能
1.建立测试表和测试procedure
use test;
create table test_load (
a INT,
b CHAR(80)
) ENGINE=INNODB;
DELIMITER //
CREATE PROCEDURE p_load(count INT UNSIGNED)
BEGIN
DECLARE s INT UNSIGNED DEFAULT 1;
DECLARE c CHAR(80) DEFAULT REPEAT('a',80);
WHILE s <= count DO
INSERT INTO test_load SELECT NULL,c;
COMMIT;
SET s = s+1;
END WHILE;
END;
//
2.测试参数:innodb_flush_log_at_trx_commit=1
(product)root@localhost [test]> show variables like 'innodb_flush_log_at_trx_commit';
+--------------------------------+-------+
| Variable_name | Value |
+--------------------------------+-------+
| innodb_flush_log_at_trx_commit | 1 |
+--------------------------------+-------+
1 row in set (0.00 sec)
(product)root@localhost [test]> CALL p_load(500000);
Query OK, 0 rows affected (17 min 21.91 sec)
上面执行时间为17分21.91秒.
每轮测试完成后,需要作如下处理:
1.drop table test_load和drop PROCEDURE p_load
2.重启mysqld实例,并且用下面的方法删除系统cache,释放swap(如果用到了swap的话),甚至可以重启整个OS。
3.sync -- 将脏数据刷新到磁盘
4.echo 3 > /proc/sys/vm/drop_caches -- 清除OS Cache
5.swapoff -a && swapon -a
再总结一下:
1.相同条件下:innodb_flush_log_at_trx_commit=0,插入50W行数据所花时间25.08秒;
2.相同条件下:innodb_flush_log_at_trx_commit=1,插入50W行数据所花时间17分21.91秒;
3.相同条件下:innodb_flush_log_at_trx_commit=2,插入50W行数据所花时间1分0.35秒。
上面参数值为1时,所花时间太长了,与虚拟机磁盘IO性能较差有关,若是换成SSD或PCIE,差别没那么大。
参考各参数值具体含义:
0:每秒将log buffer的内容写事务日志并且刷新到磁盘;
1:每个事务提交后,将log_buffer的内容写事务日志并刷新数据到磁盘;
2:每个事务提交,将log_buffer内容写事务日志,但不进行数据刷盘。
- innodb_flush_log_at_trx_commit不同参数值下的性能测试
- innodb_flush_log_at_trx_commit参数性能的测试
- 有关mysql的innodb_flush_log_at_trx_commit参数
- innodb_flush_log_at_trx_commit参数
- innodb_flush_log_at_trx_commit 参数
- innodb_flush_log_at_trx_commit 参数
- mysql的innodb_flush_log_at_trx_commit参数深有体会
- 不同阶段的性能测试
- MySQL HA架构下innodb_flush_log_at_trx_commit及sync_binlog参数
- 参数 sync_binlog、innodb_support_xa、innodb_flush_log_at_trx_commit
- Innodb参数innodb_flush_log_at_trx_commit详解
- 10015---MySQL--innodb_flush_log_at_trx_commit参数
- 不同OS下调用参数的不同
- mysql mysql的innodb_flush_log_at_trx_commit参数深有体会
- mysql mysql的innodb_flush_log_at_trx_commit参数深有体会
- mysql mysql的innodb_flush_log_at_trx_commit参数深有体会
- 在disksim-3.0中安装flashsim,并测试不同FTL算法在不同trace下的性能
- LoadRunner案例:模拟不同情况下用户性能测试分析
- LaTeX新人教程,30分钟从完全陌生到基本入门
- ASP.Net原理
- 第11课:Spark Streaming源码解读之Driver中的ReceiverTracker架构设计以及具体实现彻底研究
- 百度之星 初赛2 瞬间转移 [杨辉三角]
- Arch LInux 系统迁移
- innodb_flush_log_at_trx_commit不同参数值下的性能测试
- 第12课:Spark Streaming源码解读之executor容错安全性
- listView 点击事件实现方法
- 动态规划:最长公共子串长度
- Hdu5696 区间的价值(花式水)
- HTTP协议
- CodeForces 23A-You're Given a String...
- vim 格式化文本,调整缩进
- 第一篇文章