MySQL5.7下事务隔离级别对性能的影响

     之前工作的公司是一家外包企业,客户基本上都购买云服务,生产MySQL数据库版本是5.6。最近入职了一家新公司,统一使用自己维护的MySQL,版本都是5.7.16。这些天花了不少时间都在做MySQL的基准测试工作,包括MySQL5.7下事务隔离级别对性能的影响。

     我的测试主要采用MySQL基准测试工具sysbench(https://github.com/akopytov/sysbench)和tpcc-mysql(https://github.com/Percona-Lab/tpcc-mysql),前者测试随机读写能力;后者测试复杂事务处理能力。测试前对原配置文件做一个拷贝,然后将原配置文件的“ transaction_isolation ”修改为“ READ-COMMITTED ”,拷贝后的配置文件为“ REPEATABLE-READ ”。这两种隔离级别分别为Oracle / MS SQL Server和MySQL的默认事务隔离级别。然后分别读取两个配置文件进行测试,每个测试结束都会清除测试数据并重启MySQL,测试也是在独立的环境里进行的,尽量消除一些交叉影响。整个过程都是通过小脚本完成的(http://blog.csdn.net/sweeper_freedoman/article/details/78939721),物理机配置为双核4G的64位CentOS。

     首先是sysbench测试的吞吐量 / TPS结果。

******************READ-COMMITTED隔离级别******************
SQL statistics:
    queries performed:
        read:                            59540152
        write:                           17011472
        other:                           8505736
        total:                           85057360
    transactions:                        4252868 (590.66 per sec.)
    queries:                             85057360 (11813.22 per sec.)
    ignored errors:                      0      (0.00 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          7200.1684s
    total number of events:              4252868

Latency (ms):
         min:                                  2.24
         avg:                                  3.38
         max:                                389.75
         95th percentile:                      4.49
         sum:                            14388126.96

Threads fairness:
    events (avg/stddev):           2126434.0000/817.00
    execution time (avg/stddev):   7194.0635/0.01
	
******************REPEATABLE-READ隔离级别******************
SQL statistics:
    queries performed:
        read:                            59420284
        write:                           16977076
        other:                           8488562
        total:                           84885922
    transactions:                        4244256 (589.47 per sec.)
    queries:                             84885922 (11789.42 per sec.)
    ignored errors:                      50     (0.01 per sec.)
    reconnects:                          0      (0.00 per sec.)

General statistics:
    total time:                          7200.1644s
    total number of events:              4244256

Latency (ms):
         min:                                  1.95
         avg:                                  3.39
         max:                                688.12
         95th percentile:                      4.49
         sum:                            14388073.43

Threads fairness:
    events (avg/stddev):           2122128.0000/147.00
    execution time (avg/stddev):   7194.0367/0.03

     “ READ-COMMITTED ”的TPS为590.66;“ REPEATABLE-READ ”的TPS为589.47。其他结果值也基本接近。

     然后是tpcc-mysql的测试结果。“ READ-COMMITTED ”为9784 TpmC;“ REPEATABLE-READ ”为10170 TpmC。“ REPEATABLE-READ ”不落下风。以下为1个小时的测试过程中,两种隔离级别的具体表现(测试过程中每60秒打印一次输出)。


     个人之前一直是作为MySQL5.6的管理员。当然,现在的版本是5.7。使用最新版本的MySQL肯定是正确的选择。查阅MySQL的Release Notes和官方文档对5.7的介绍,提到对性能做了很多优化工作,测试来看,的确如此!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值