mysql update 并发 慢_MySQL跑在CentOS 6 和 7上的性能比较
点击蓝色“程序猿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
与大家聊聊技术人的斜杠生活
相关文章:

远程控制virtual box虚拟机系统的三种方式
远程控制virtual box虚拟机系统的三种方式【阅读时间:5分钟】1.使用现有的远程控制软件2.使用SSH连接3.使用远程桌面控制虚拟机系统对于把虚拟机安装在寝室笔记本的人来说,能够远程控制虚拟机的系统是很重要的一件事,而远程控制虚拟机的方式一…

Kernel那些事儿之内存管理(7) --- Slab(上)
前面讲的buddy system算法,分配内存的最小单位是一个页面(例如 4K)。这对于大的内存申请比较适用。可是实际生活中,Kernel经常需要分配小的内存空间,比如几十个字节,这个时候怎么办呢?不同的人可…

Vyond制作2D动画学习教程
Vyond为2D动画提供了极其简单的分解视频创建过程。 你会学到什么 课程获取:Vyond制作2D动画学习教程-云桥网 您将学习如何为2d动画制作画外音 您将学习如何使用Vyond轻松创建精彩的动画视频 流派:电子学习| MP4 |视频:h264,1280720 |音频:AAC…

Blender3.0电影级别CG场景制作视频教程
Blender 3.0的电影场景制作–8小时以上的主教程 三本教程合三为一 你会学到什么 你将学习如何在Blender中建模 你将学习如何在Blender中创建更复杂的纹理 你将学习如何创建一个场景,设置摄像机和灯光 你将在Blender中学习动画的基础知识 你将会学到如何在Blender中…

Android WebView使用与JavaScript使用
WebView基本使用 WebView是View的一个子类,可以让你在activity中显示网页。 可以在布局文件中写入WebView:比如下面这个写了一个填满整个屏幕的WebView: <?xml version"1.0" encoding"utf-8"?> <WebView x…

YOLOv8-Detect训练CoCo数据集+自己的数据集
至此,整个训练预测阶段完成。此过程同样可以在linux系统上进行,在数据准备过程中需要仔细,保证最后得到的数据准确,最好是用显卡进行训练。有问题评论区见!

lvs服务器需要开启web服务么_Nginx+Keepalived实现web服务器高可用
1、Nginx业务背景现公司需求快速搭建web服务器,对外提供给用户web服务。需求拆分需要基于http协议的软件,搭建服务实现介绍常见用法:1) web服务器软件 httpd http协议同类的web服务器软件:apache(老牌) nginx(俄罗斯) IIS(微软)2)…

centos使用镜像源轻松配置golang+vscode的方法
Title:centos使用镜像源轻松配置golangvscode的方法 (阅读时间:约5分钟) 零.序言 最近笔者在上一门名为服务计算的课程,在老师的作业博客中提到,安装golangvscode环境总会遇到各种网络问题,在…

MySQL_update同一张表
update tb1 inner join(select type, count(*) as cntfrom tb1 group by type)as der using(type)set tb1.cnt der.cnt转载于:https://www.cnblogs.com/MarchThree/p/4641515.html

在SolidWorks 3D CAD中构建乐高直升机
以有趣而独特的方式练习您的3D CAD技能 你会学到什么 练习SolidWorks三维CAD的使用 学习如何使用机械伴侣 创建直升机的零件 将零件组装成工作模型 类型:电子教学| MP4 |视频:h264,1280720 |音频:AAC,48.0 KHz 语言:英语中英文字幕…

CSS局限属性contain:优化渲染性能的利器
在网页开发中,优化渲染性能是一个重要的目标。CSS局限属性contain是一个强大的工具,可以帮助我们提高网页的渲染性能。本文将介绍contain属性的基本概念、用法和优势,以及如何使用它来优化网页的渲染过程。

利用java多线程向MongoDB中批量插入静态文件
第一步、开发环境: win7 64位(注:MongoDb在32位windows上有数量限制(2G),详见官方文档) Mongodb3.2 mongofb_java_driver 3.2.2 第二部、安装mongodb,并开启服务 略:可参见官方文档 第三部、代码 import java.io.BufferedReader; …

为啥我从后台查到的值在页面显示的是undefined_再谈一个管理后台列表功能应有的素质...
大家能看到的这个号第1篇文章《无心朝政,列表功能分析下》就是讲列表功能。虽然当时写的时候特别认真,但基本是围绕“列表功能”这个广泛的词来阐述的。最近在做一个体育赛事赛程的后台管理系统 Match-Schedule,对管理后台列表有更多的体会…

Go语言的错误异常处理机制及其应用
一、背景 在日常编写golang程序或阅读别人的golang代码时,我们总会看到如下的一堆代码块: xx, err func(xx) if err ! nil {//do sth. to tackle this problem }这种经典的显式错误处理方式,在golang开发中几乎无处不在,了解过…

【Win10 应用开发】语音命令与App Service集成
昨天,老周演示了语音命令集成这一高大上功能,今天咱们来点更高级的语音命令。 在昨天的例子中,响应语音命令是需要启动应用程序的,那么如果可以不启动应用程序,就直接在小娜面板上进行交互,是不是会更高大小…

Maya 2022中的硬表面建模技术学习视频教程
Maya 2022中的硬表面建模 信息: 使用正确的拓扑和边流在Maya中建模硬曲面对象。 你会学到什么 硬质表面工具和技术 细分工作流程 边缘流动控制 正确拓扑 材料设置 Studio Lightning 渲染 持续时间16小时30分钟 1280X720 MP4 大小解压后:11.5G 语言:英…

六年级小学python第四讲_python第四讲
列表的排序 升序:从小到大的排序 降序:从大到小的排序 示例: num_list [120,250,11,44,77,45,22,390] num_list.sort() # 升序 - 从小到大 print(num_list) # 对列表本身做了修改 num_list.sort(reverseTrue)#降序 为False#升序 print(num_list) 反转 p…

android之AlertDialog 点击其它区域自己主动消失
遇到一个问题记录下来,在开发中使用了AlertDialog,想点击屏幕其它区域的时候让这个dialog消失,一開始不做不论什么设置,在小米手机能够正常显示,可是在三星中却有问题。后来发现少了一个属性: View dilaogV…

中级实训第一天的自学报告
目录【阅读时间:约10分钟】中级实训第一天的自学报告姓名:隐藏敏感信息 学号:隐藏敏感信息一、Vi/Vim二、Java三、Ant四、Junit【附加】五、SonarQube【附加】六、 编译运行BugRunner七、 总结中级实训第一天的自学报告 姓名:隐藏…

完整的Blender三维课程:素描到三维艺术的初学者
使用Blender创建3D艺术。初级课程 你会学到什么 使用Blender并理解它的界面 创建3D模型 创建您自己的材料 布料仿真、纹理和雕刻 第三种解释的相机法则 照相机景深 灯光设置 渲染 如何使用参考素材进行3D素描和建模?参考镜头也包括在内。 课程中包含所有章节场景文…

VirtualBox: Effective UID is not root
为什么80%的码农都做不了架构师?>>> 桌面上运行virtualbox出错: The virtual machine xp has terminated unexpectedly during startup with exit code 1 (0x1). Effective UID is not root(euid1000 egid482 uid1000 gid482)(rc-10) Please try reinst…

ironpython 教程_「ironpython」VS2017 IronPython做界面
本人开始做毕设了,但老师说工具要有界面,所以就开始找Python做界面的东西……之前做过C#的界面,脱拉拽很快界面就完成了,后来我查了下IronPython是用C#写的python解释器,也可以脱拉拽做界面,于是就开始尝试…

4、jQuery实现的全选、反选和不选功能
2019独角兽企业重金招聘Python工程师标准>>> 这个地址更权威:最好的选择:http://www.sucaihuo.com/js/10.html <html><head><title>TODO supply a title</title><meta charset"UTF-8"><meta name…

构建自己的PHP框架--构建缓存组件(1)
作为一个框架,我们还没有相应的缓存组件,下面我们就来构建我们的缓存组件。 先来定义一下接口,在 src 文件夹下创建 cache 文件夹,在cache文件夹下创建 CacheInterface.php 文件,其中定义 Cache 相应的接口,…

基于Golang的CLI 命令行程序开发
基于Golang的CLI 命令行程序开发 【阅读时间:约15分钟】一. CLI 命令行程序概述二. 系统环境&项目介绍&开发准备1.系统环境2.项目介绍3.开发准备三.具体程序设计及Golang代码实现1.selpg的程序结构2.导入的库3.sp_args结构体4.全局变量4.main函数5.process_…

Photoshop创造氛围照片合成视频教程含素材
数百个高分辨率工具和9个完整项目! 这个包包含开始创建史诗大气合成所需的一切-超过四个小时的基于项目的深入教程和超过400个合成工具。 大小解压后:10.7G 含课程素材文件 1920X1080 mp4 语言:英语中英文字幕(根据原英文字幕机…

java c++的区别_Java语言与C、C++之间的区别?
小伙伴你知道吗?Java是由C开发而来的,并且在当时一直被搁置。随着Java语言的崛起那么Java和C/C有什么不同和相同之处呢?通过上述我们知道那Java前身是C,并且保留了C的大部分内容,其编程方式也类似于C。但Java的句法更清…

Android编程获取网络连接状态及调用网络配置界面
获取网络连接状态 随着3G和Wifi的推广,越来越多的Android应用程序需要调用网络资源,检测网络连接状态也就成为网络应用程序所必备的功能。 Android平台提供了ConnectivityManager 类,用于网络连接状态的检测。 Android开发文档这样描述Connec…

学习在Unity中创建一个动作RPG游戏
游戏开发变得简单。使用Unity学习C#并创建您自己的动作角色扮演游戏! 你会学到什么 学习C#,一种现代通用的编程语言。 了解Unity中2D发展的能力。 发展强大的和可移植的解决问题的技能。 了解游戏开发流程。 了解面向对象编程在实践中是如何工作的。 Le…

python数组对应元素相乘_python的几种矩阵相乘的公式详解
1. 同线性代数中矩阵乘法的定义: np.dot() np.dot(A, B):对于二维矩阵,计算真正意义上的矩阵乘积,同线性代数中矩阵乘法的定义。对于一维矩阵,计算两者的内积。见如下Python代码: import numpy as np # 2-D…