当前位置:网站首页>MySql主要性能指标说明
MySql主要性能指标说明
2022-08-10 18:02:00 【liuyunshengsir】
在项目当中数据库一般都会成为主要的性能与负载瓶颈,那么针对数据库各项性能指标的监控与对应的优化是开发与运维人员需要面对的主要工作,而且这部分的工作会贯穿项目从开发到运行的整个周期里。
这篇文章中我们对MySql数据库中的几个主要的性能指标的计算与统计进行下说明与总结。
在MySql中通过show global status可以得到很多的性能指标项,从中我们可以可以抽取需要关注的指标项:
1、CPU、内存使用率、磁盘占用空间
CPU、内存、磁盘这三项是我们能够看到的最直观的指标,也是MySql运行状态的整体体现,一旦我们的数据库服务器这三项出现不正常的波动,必然会影响项目的稳定与性能,从而就需要我们对项目与MySql进行合理配置与优化。
2 、创建的连接数、连接的连接数、连接缓存数、连接活跃数
Threads_created:
通过show global status like "Threads_created"可以查看已经创建的连接数,这个顾名思义就是MySql已经创建的总连接数;
Threads_connectd:
通过show global status like "Threads_connectd"可以查看已经连接的连接数,这个值等于show processlist;
Threads_catched:
通过show global status like "Threads_catched"可以查看当前MySql当前缓存的连接数,我们知道MySql建立连接非常消耗资源,当已有连接不再使用之后,MySql不会直接断开连接,而是将连接缓存到缓存池中,以便下次在有create thread的需求时,从而达到复用连接,提高性能的目标,所以Threads_catched中的值就是当前缓存池中可用连接数量,由此我们可以得出 Threads_created的值应该是Threads_connectd与Threads_catched之和, 当然如果已经有了中间件或者其他的连接池管理,那么这个参数就没有那么重要了,但是如果没有其他的连接池管理,那么优化这个参数还是有一定必要的。
Threads_running:
通过show global status like "Threads_running"可以查看当前活跃的连接数,这个值代表处于当前激活状态的连接线程个数,这个值必定是小于Threads_connectd的。
3、IOPS、QPS、TPS
IOPS:(Input/Output operations Per Second,既每秒处理I/O的请求次数)
我们知道数据库的处理本质上是IO的读写处理,你可以简单的把IOPS理解为存储介质(一般是磁盘)在单位时间内能处理的IO读写请求数量,因为所有对MySql数据库的访问与操作最后都会落在对磁盘的读写上,那么IOPS的数值越高自然在一定时间内能接受的数据库处理请求就越多,IOPS的计算公式:IOPS=1000ms/(寻道时间+旋转延迟时间),可以看到这个指标的计算跟你存储介质的性能是息息相关的,所以把普通机械硬盘替换为SSD固态硬盘是提高MySql处理能力的一种比较有效的手段。
QPS(Query Per Second,既每秒请求查询次数)
QPS是MySql数据库的一个十分重要指标,它代表MySql数据库每秒接收的请求查询次数,我们可以通过show global status like “Questions” 来查看数据库当前的Questions也就是查询请求的次数,但要注意的是这个值是一个全局的累计值,也就是自MySql服务启动后所有查询次数。如果我们计算的是数据库服务QPS性能的一个均值,可以直接采用下面的计算方式:
questions = show global status like “questions”; – MySql启动后查询请求的总数量
uptimes = show global status like “uptime”; – MySql本次启动后的运行时间(单位:秒)
QPS = questions/uptimes
如果你要计算的是系统峰值时QPS指标,这就需要我们手动去计算了,我们可以相隔单位时间通过show global status like "Questions"命令查询下这个值,并将相邻的两值相减除以相隔的时间,得到的就是精确的每一秒的实际请求数了。
TPS(Transcantion Per Second,既每秒事务数)
既然是每秒事务数据,在InnoDB引擎下才会有这个指标数据,TPS涉及到事务的提交与回滚,所以计算TPS时需要把show global status like “Com_commit” 与 show global status like “Com_rollback”,计算方法同样需要我们每间隔一段时间进行一次采样,然后把Com_commit与Com_rollback值相加除以单位时间就是TPS值了,公式如下:
commit = show global status like “Com_commit”;
rollback = show global status like “Com_rollback”;
TPS= (commit+rollback)/seconds(单位时间,单位:秒)
4、InnoDB缓存读命中率、使用率、脏块率(%)
在MySql的使用中,由于InnoDB引擎的优点与特性,我们一般都会选择其做为MySql的数据引擎,InnoDB拥有的缓存特性可以很大程度的提高MySql的查询性能,因为Innodb 不仅仅缓存索引,同时还会缓存实 际的数据,通过配置我们可以在Innodb 存储引擎中使用更多的内存来缓存数据,那么在这个过程中其缓存的命中率、使用率与脏块率必然是重要的性能指标。
关于Innodb有很多参数指标:
//innodb文件读写次数
innodb_data_reads:innodb平均每秒从文件中读取的次数
innodb_data_writes:innodb平均每秒从文件中写入的次数
innodb_data_fsyncs:innodb平均每秒进行fsync()操作的次数
//innodb读写量
innodb_data_read:innodb平均每秒钟读取的数据量,单位为KB
innodb_data_written:innodb平均每秒钟写入的数据量,单位为KB
//innodb缓冲池状态
innodb_buffer_pool_reads: 平均每秒从物理磁盘读取页的次数
innodb_buffer_pool_read_requests: 平均每秒从innodb缓冲池的读次数(逻辑读请求数)
innodb_buffer_pool_write_requests: 平均每秒向innodb缓冲池的写次数
innodb_buffer_pool_pages_dirty: 平均每秒innodb缓存池中脏页的数目
innodb_buffer_pool_pages_flushed: 平均每秒innodb缓存池中刷新页请求的数目
复制代码
而InnoDB缓存读命中率、使用率、脏块率(%)主要就是根据上面参数计算出来的
innodb缓冲池的读命中率 = ( 1 - Innodb_buffer_pool_reads/Innodb_buffer_pool_read_requests) * 100
Innodb缓冲池的利用率 = ( 1 - Innodb_buffer_pool_pages_free / Innodb_buffer_pool_pages_total) * 100
Innodb缓冲池的脏块的百分率 = (innodb_buffer_pool_pages_dirty / innodb_buffer_pool_pages_total) * 100
5. 网络流量(平均每秒的输入输出量)
MySql数据的网络流量监控可通过计算单位时间内Bytes_received与Bytes_sent获取。
Bytes_received/s:平均每秒从所有客户端接收到的字节数,单位KB
Bytes_sent/s:平均每秒发送给所有客户端的字节数,单位KB
6、MySql中InnoDB引擎每秒钟查询次数、插入次数、删除次数、更新次数的统计
MySql数据库全局的查询、插入、删除、更新次数可通过show global status like "%innodb_rows%"命令来查看,而计算单位时间内的上述各项指标即可获取InnoDB引擎每秒钟查询次数、插入次数、删除次数、更新次数
InnoDB引擎每秒钟查询次数 = Innodb_rows_read/s
InnoDB引擎每秒钟插入次数 = Innodb_rows_inserted/s
InnoDB引擎每秒钟删除次数 = Innodb_rows_deleted/s
InnoDB引擎每秒钟删除次数 = Innodb_rows_updated/s
以上就是MySql数据库中一些主要性能指标的计算与统计方式,监控与统计这些性能指标,一方面可以对MySql数据库的运行状态进行监控,另一方面也可以通过某性能指标的异常查找与定位问题所在,希望对大家项目中MySql数据库的使用有所帮助,其中如有不足与不正确的地方还望指出与海涵。
边栏推荐
- How to choose Fengjiawei PHY62xx series?PHY6222/PHY6212/PHY6252
- 测试接口出现“data“: “Full authentication is required to access this resource“凭证已过期
- postgis空间数据导入及可视化
- 【HMS core】【FAQ】Account Kit、push Kit典型问题合集1
- ZLMediaKit 服务器源码解读---RTSP推流拉流
- 【接入指南 之 直接接入】手把手教你快速上手接入HONOR Connect平台(下)
- Allegro软件Shape菜单下的每个命令的含义
- 同一块中出现两个 * 就不能正常显示
- 关于奉加微PHY62xx系列如何选型?PHY6222/PHY6212/PHY6252
- 微信小程序富文本标签rich-text
猜你喜欢

【HMS core】【FAQ】AR Engine、Analytics Kit、Video Editor Kit、Image Kit、Map Kit典型问题合集2

【HMS core】【FAQ】Analytics Kit、Push Kit典型问题合集3

Wuling Hongguang MINI EV, the only drawback is safety

Active users of mobile banking grew rapidly in June, hitting a half-year high

【快应用】如何使用命令打包快应用rpk

IoU、GIoU、DIoU、CIoU四种损失函数总结

期货开户手续费加1分已经是常态

【图像去雾】基于颜色衰减先验的图像去雾附matlab代码

LeetCode 198:打家劫舍

迪文发布新款2K高清DGUS智能屏
随机推荐
【2015】【论文笔记】等离子光混合器THz辐射的光谱——
JSON serialization and deserialization using Jackson API in Scala
eager模式和graph模式 Tensorflow
FFmpeg 从mp4上提取H264的nalu
【数据存储精讲】整型和浮点型有什么区别?为什么会精度丢失?
「业务架构」业务能力的热图是什么,有啥用?
智能安防产品公司及产品
6月各手机银行活跃用户较快增长,创半年新高
pyspark列合并为一行
pip安装时 fatal error C1083 无法打开包括文件 “io.h” No such file or directory
多线程与高并发(五)—— 源码解析 ReentrantLock
【快应用】实现自定义导航栏组件
flex使用align-content无效
set和map使用讲解
【2011】【论文笔记】用THz-TDS观察水树——
Making Pre-trained Language Models Better Few-Shot Learners
机器人控制器编程实践指导书旧版-实践三 直流电机(执行器)
EasyGBS连接mysql数据库提示“can’t connect to mysql server”,如何解决?
容器化 | 在 S3 实现定时备份
【FAQ】OpenHarmony与HarmonyOS的有什么区别?