前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >MySQL centos 6 vs 7的性能对比

MySQL centos 6 vs 7的性能对比

作者头像
用户1278550
发布2019-06-12 13:52:01
8360
发布2019-06-12 13:52:01
举报
文章被收录于专栏:idba

一前言

计划今年将数据库服务器的os 从centos 6 升级到centos 7,根据惯例,升级之前我们要进行一次性能压测。本文分享一下我们的压测记录和结果。

二 压测准备

2.1 压测方法

使用sysbench-0.5构造10张表 ,每张表500w数据,并行度分别为12 24 36 48 60 72 ,每个并发压测4小时,共计24小时。压测命令如下

/opt/yz-sysbench/bin/sysbench --test=/opt/yz-sysbench/share/sysbench/oltp.lua --oltp-tables-count=10 --oltp-table-size=5000000 - -mysql-db=sysbench --mysql-user=sysbench --mysql-password=sysbench --mysql-socket=/srv/my3306/run/mysql.sock --max-time=14400 --max-requests=0 --num-threads=12 --oltp-test-mod e=complex run

注: sysbench在本地安装,压测几乎没有网络交互的时间损耗。

2.2 目标数据

因为是要压测数据库性能,所以本次主要监控数据库性能qps tps,主机io ,cpu 等性能指标。

三 压测数据

3.1 qps
3.2 insert /delete

sysbench 的oltp模式,insert和delete的比例是一样的,压测每秒的tps数据一致,故放到一起。

3.3 update 性能
3.4 cpu io 对比

centos 7的cpu 负载比centos6 略低,io 利用比centos 6的更高些。

3.5 热点秒杀场景

推荐先看文章 热点商品更新优化方案

MySQL为了提高数据库的数据安全性,设置2个参数来控制数据落盘的策略,我们目前的设置为每次提交事务都会出发写数据到磁盘,带来的好处是数据安全,最极端的情况下会丢失一个事务,其负面影响是会导致大量的IO操作。

另外一点数据库并发执行update同一行的动作会被其他已经持有锁的会话堵住,并且需要要进行判断会不会由于自己的加入导致死锁,这个时间复杂度O(n),如果有1000个请求,每个线程都要检测自己和其他999个线程是否死锁。如果其他线程都没有持有其他锁,约比较50w次(计算方式 999+998+...+1)。这个种锁等待和检查死锁冲突带来巨大的时间成本。

核心优化参数

代码语言:javascript
复制
sync_binlog=0                    -- 交给系统来刷binloginnodb_flush_log_at_trx_commit=0 -- 每秒刷新redo buffer到磁盘innodb_deadlock_detect=OFF       --关闭死锁检测innodb_lock_wait_timeout=2

压测场景:

代码语言:javascript
复制
CREATE TABLE `seckill` (  `id` int(11) DEFAULT NULL,  `num` bigint(20) DEFAULT NULL) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
insert into seckill(id,num) values(1,200000000000000);
mysqlslap  -uroot -h127.0.0.1 -P 3316  --concurrency=72  --create-schema='test'  --query='begin;update seckill set num=num-1 where id =1 and num>1;commit;' --number-of-queries=500000

主要模拟数据库在高并发场景,并发数分别设置为:72,96,144,192,256个活跃会话并发.

在秒杀场景下,centos 7 性能逆天,同等条件下是centos 6的三倍多,通过参数调优之后,centos 7 并发更新可以高达1w以上,当然生产环境的商品扣减,有多次查询和insert,update,性能会有一定下降。但是同比而言,也会有相当的性能提升。

3.4 分析

从压测结果上来看 qps centos7 的性能提升明显。qps 提升 20% - 40%。 tps 方面也有 20% 以上的性能提升。期待生产环境下的表现(使用复杂的业务sql,估计性能提升没有sysbench那么明显)。

四 小结

压测新的系统是一件很有意思的事情,centos 7 有哪些影响MySQL 性能的优化呢? 这个留个尾巴,且待下回分解。也欢迎生产上已经使用centos 7 或者redhat 7 版本的朋友留言,分享你们遇到的问题或者其他给运维带来的影响。

五 彩蛋

最近开始学习MGR的技术,正好遇到叶金荣老师和之前的老同事冯光普做了一个课程 --《深入浅出MySQL Group Replication》

本课程分成基础、进阶、实践三大模块,系统全面地从基本原理、实现细节、实践指导等多方面学习掌握MGR各个知识点,课程中还介绍了MGR的特性及限制、适用场景、冲突检测原理、流控机制、性能优化等内容。本课程系业界首发,可通过知数堂在线课堂在线学习。原价68元,现在报名可享受首月特价仅需48元。

冯老师是某大型电商数据库负责人,保障线上数据库集群的稳定高效运行,并负责数据库自动化运维平台建设,热衷开源数据库技术分享及交流。

扫描下方二维码

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-06-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 yangyidba 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 二 压测准备
    • 2.1 压测方法
      • 2.2 目标数据
      • 三 压测数据
        • 3.1 qps
          • 3.2 insert /delete
            • 3.3 update 性能
              • 3.4 cpu io 对比
                • 3.5 热点秒杀场景
                  • 3.4 分析
                  • 四 小结
                  • 五 彩蛋
                  相关产品与服务
                  云数据库 SQL Server
                  腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档