测试工具:sysbench
测试服务器:DL380 G7 1台 单机测试
内存大小:主机内存32G ,INNODB POOL SIZE 20G
硬盘:2块普通的HDD盘
CPU:12物理core
raid卡写cache开启
mysql版本:5.6.19
MYSQL 基准测试结果:
1)安全事务提交的方式,一个事务只包含一个update,事务数可到22000左右
2)安全事务提交的方式,一个事务包含一个insert 3个update 1个delete,事务数可到10000以上
3)非安全提交的方式,一个事务包含一个insert 3个update 1个delete,事务数可到12000以上。
4)查询数非常恐怖,可到180000以上,CPU已耗尽
如果仅仅压测事务,机器的CPU很难耗尽,再增多并发,TPS也没大的提升。查询非常容易耗尽主机的CPU。这几点上跟ORACLE是一样的。
主机raid卡的cache非常重要,之所以采用安全事务提交方式MYSQL的事务数也能非常高,都归功于raid的cache。如果关闭cache,提交数只能到400左右。
测试方法:
测试场景一:测试MYSQL每秒的事务数(每次提交刷新日志到磁盘,日志包含binlog和innodb的事务日志)
涉及参数:
sync_binlog=1
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
一个事务包含:(一个insert 3个update 1个delete)
并发数 | tps | CPU使用 |
15 | 7394 | 35% |
20 | 9264 | 40% |
25 | 10431 | 43% |
30 | 11207 | 48% |
测试参数:
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=2000000 --oltp-distinct-ranges=0 --mysql-db=test --mysql-user=root --mysql-password=123456 --oltp-order-ranges=0 --oltp-range-size=100 --oltp-point-selects=0 --oltp-simple-ranges=0 --oltp-sum-ranges=0 --oltp-test-mode=complex --max-requests=2000000 --num-threads=20 --max-time=40 run
测试场景二:测试MYSQL每秒的事务数(每次提交刷新日志到缓存,由操作系统决定何时刷磁盘)
涉及参数:
sync_binlog=0
innodb_flush_log_at_trx_commit=2
一个事务包含:(一个insert 3个update 1个delete)
并发数 | tps | CPU使用 |
15 | 11163 | 49% |
20 | 12979 | 55% |
25 | 13704 | 60% |
测试参数:
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=2000000 --oltp-distinct-ranges=0 --mysql-db=test --mysql-user=root --mysql-password=123456 --oltp-order-ranges=0 --oltp-range-size=100 --oltp-point-selects=0 --oltp-simple-ranges=0 --oltp-sum-ranges=0 --oltp-test-mode=complex --max-requests=2000000 --num-threads=20 --max-time=40 run
测试场景三:测试MYSQL每秒的查询数
有多个查询语句:主键等值查询、主键范围查询(100跨度)、主键范围查询求SUM、主键范围查询排序、主键范围查询求distinct
并发数 | QPS | CPU使用 |
15 | 133362 | 63% |
20 | 155422 | 79% |
25 | 188904 | 100% |
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=2000000 --oltp-distinct-ranges=0 --mysql-db=test --mysql-user=root --mysql-password=123456 --oltp-read-only=on --oltp-test-mode=complex --max-requests=2000000 --num-threads=20 --max-time=40 run
测试场景四:测试MYSQL每秒的事务数(每次提交刷新日志到磁盘,日志包含binlog和innodb的事务日志)
涉及参数:
sync_binlog=1
innodb_flush_log_at_trx_commit=1
innodb_flush_method=O_DIRECT
一个事务只包含一个update,事务数22246
测试参数:
sysbench --test=oltp --mysql-table-engine=innodb --oltp-table-size=2000000 --oltp-distinct-ranges=0 --mysql-db=test --mysql-user=root --mysql-password=123456 --oltp-nontrx-mode=update_key --oltp-test-mode=nontrx --max-requests=2000000 --num-threads=30 --max-time=40 run
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/22034023/viewspace-1363440/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/22034023/viewspace-1363440/