点击蓝色“程序猿DD”关注我哟

加个“星标”,不忘签到哦

来源:yangyidba


关注我,回复口令获取可获取独家整理的学习资料:

001 :领取《Spring Boot基础教程》

002 :领取《Spring Cloud基础教程》

一 前言

计划今年将数据库服务器的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)。这个种锁等待和检查死锁冲突带来巨大的时间成本。

核心优化参数

sync_binlog=0 -- 交给系统来刷binlog

innodb_flush_log_at_trx_commit=0 -- 每秒刷新redo buffer到磁盘

innodb_deadlock_detect=OFF --关闭死锁检测

innodb_lock_wait_timeout=2

压测场景:

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 版本的朋友留言,分享你们遇到的问题或者其他给运维带来的影响。

推荐关注

本文作者的个人公众号,长期关注于数据库技术以及性能优化,故障案例分析,数据库运维技术知识分享,个人成长和自我管理等主题,欢迎扫码关注。


推荐阅读

  • Spring Boot 配置文件中的花样,看这一篇足矣!

  • Mybatis的工作原理,你了解过吗?

  • 理解 IntelliJ IDEA 的项目配置和Web部署

  • 如何告别那些没卵用的线上告警!

  • 线上慢查询?试试这几个优化思路!


2019

与大家聊聊技术人的斜杠生活

mysql update 并发 慢_MySQL跑在CentOS 6 和 7上的性能比较相关推荐

  1. MySQL跑在CentOS 6 和 7上的性能比较

    点击蓝色"程序猿DD"关注我哟 加个"星标",不忘签到哦 来源:yangyidba 关注我,回复口令获取可获取独家整理的学习资料: - 001 :领取<S ...

  2. mysql 高并发加锁_Mysql高并发加锁事务处理

    MySQL 使用 SELECT - FOR UPDATE 做事务写入前的确认 以MySQL 的InnoDB 为例,预设的 Tansaction isolation level 为 REPEATABLE ...

  3. mysql update 联合更新_Mysql update多表联合更新的方法小结

    下面我建两个表,并执行一系列sql语句,仔细观察sql执行后表中数据的变化,很容易就能理解多表联合更新的用法 student表 class表 1. 执行 UPDATE student s , clas ...

  4. mysql update修改数据_MySQL UPDATE:修改数据(更新数据)

    在 MySQL 中,可以使用 UPDATE 语句来修改.更新一个或多个表的数据. UPDATE 语句的基本语法 使用 UPDATE 语句修改单个表,语法格式为: UPDATE SET 字段 1=值 1 ...

  5. MySQL单机并发量_mysql百万并发量-MySQL集群能支持100万个并发请求吗

    当然支持100万并发. 首先,我们必须做出决定,把阅读和写作分开. 然后,它取决于你需要分配多少个单元用于写作和阅读. 我的SQL集群不建议您使用它,因为有太多的错误. 所有这些都需要先进行压力测试. ...

  6. mysql update 并发 慢_详解Mysql的锁机制

    一.Mysql为什么要加锁 锁机制用于管理对共享资源的并发访问,是对数据库的一种保护机制,也是数据库在事务操作中保证事务数据一致性和完整性的一种机制.当有多个用户并发的去存取数据时,在数据库中就可能会 ...

  7. mysql update 排他锁_Mysql 共享锁(lock in share mode),排他锁(for update)

    共享锁(lock in share mode) 简介 允许不同事务之前共享加锁读取,但不允许其它事务修改或者加入排他锁 如果有修改必须等待一个事务提交完成,才可以执行,容易出现死锁 共享锁事务之间的读 ...

  8. mysql update 有中文_MySQL Update语句一个非常经典的“坑”

    点击关注上方"SQL数据库开发", 设为"置顶或星标",第一时间送达干货 起因 最近好几次有开发同学在钉钉上问我,比如下图: 问题归纳起来就是:在MySQL里面 ...

  9. mysql update commit吗_MySQL需要commit么

    mysql在进行如插入(insert)操作的时候需不需要commit,这得看你的存储引擎,如果是不支持事务的引擎,如myisam,则是否commit都没有效的. 推荐课程:MySQL教程. 如果是支持 ...

最新文章

  1. The ECDSA host key for XXX has changed
  2. 大数据概述 ——林子雨老师第一课
  3. PageRank算法--从原理到实现
  4. DB Reindex
  5. php上传商品信息并显示,第37课 thinkphp5添加商品基本信息及通过前置钩子上传商品主图 模型事件(勾子函数)...
  6. C语言小游戏 ——推箱子
  7. 为 Notepad++ 安装 NppFTP 插件,查看修改虚拟机上的文本文件
  8. atitit。gui 界面皮肤以及换肤总结 java .net c++
  9. 技术研发团队管理计划方案书
  10. Matlab中zeros和ones函数用法
  11. router 路由守卫
  12. LeCo-206反转链表
  13. bootstrap如何设置满屏显示
  14. The package java.awt is not accessible的解决方案
  15. BlockingQueue应用
  16. shell十三问--shell教程
  17. html如何绘制热图,R使用笔记: heatmap.2绘制热图
  18. Python Scapy使用方法
  19. JS实现天气预报查询
  20. 清华计算机考研任昱鑫,牛!赣州6名学霸提前被清华北大“锁定”!来自这些学校…...

热门文章

  1. vue下轻松解决模拟微信视频缩略图拖拽→吸附窗口边界的功能
  2. Windows 10完美识别3TB硬盘实录
  3. python中的random模块学习
  4. 在Ubuntu 14.04 64上安装gevent_zeromq-0.2.5
  5. LTE MIB 的发送周期
  6. 近20个绚丽实用的jQuery/CSS3侧边栏菜单(转载)
  7. 《Java 8 实战》(二)—— Lambda
  8. URI、URL以及URN的区别
  9. 关于ognl+struts-tag与el+jstl互相代替,以及el和jstl的学习笔记
  10. 【技巧——windows】直接登陆到桌面,免去输入密码