性能测试实战 30 讲
高楼
前 HP 高级性能专家,7DGroup 创始人
45941 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 37 讲
性能测试实战 30 讲
15
15
1.0x
00:00/00:00
登录|注册

22丨MySQL:数据库级监控及常用计数器解析(上)

InnoDB其他信息
InnoDB锁报表
InnoDB缓存池报表
线程报表
连接报表和临时表
表信息报表
查询缓存报表
查询和排序报表
操作报表
索引报表
mysql_exportor+Prometheus+Grafana
pt-query-digest
mysqlreport
SHOW GLOBAL status
SHOW GLOBAL VARIABLES
performance_schema
information_schema
解决方案评估
问题根本原因
性能瓶颈分析决策树
压力场景下状态计数器
组件架构图
组件列表
系统架构图
分析决策树
总结
mysqlreport
监控工具
架构图
步骤
逻辑
SQL分析
MySQL性能分析
性能瓶颈判断分析
思考题
性能分析
参考文章

该思维导图由 AI 生成,仅供参考

数据库是一个非常大的话题,我们在很多地方,都会看到对数据库的性能分析会包括以下部分。
但其实呢,以上这些内容都是我们应该具备的基础知识,所以我今天要讲的就是,具备了这些基础知识之后我们应该干什么事情。
也就是说,从性能瓶颈判断分析的角度入手,才是性能从业人员该有的逻辑。每次我分析一个性能问题时,逻辑总是这样的:
先画出整个系统的架构图。
列出整个系统中用到了哪些组件。这一步要确定用哪些监控工具来收集数据,具体的内容你可以看下之前讲到的监控设计相关的内容。
掌握每个组件的架构图。在这一步中需要列出它们的关键性能配置参数。
在压力场景执行的过程中收集状态计数器。
通过分析思路画出性能瓶颈的分析决策树。
找到问题的根本原因。
提出解决方案并评估每个方案的优缺点和成本。
这是我一直强调的分析决策树的创建逻辑。有了这些步骤之后,即使不熟悉一个系统,你也可以进行性能分析。
对于 MySQL 数据库来说,我们想对它进行分析,同样也需要看它的架构图。如下图所示(这是 MySQL5 版本的架构示意图):
这里就有一个问题了:看架构图是看什么?这个图够细吗?
首先,看架构图,一开始肯定是看大而全的架构。比如说上图,我们知道了,MySQL 中有 Connection Pool、SQL Interface、Parser 等这些大的模块。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

MySQL数据库性能分析是本文的主题,文章介绍了MySQL数据库性能分析的基本逻辑和常用工具。作者强调了从性能瓶颈判断分析的角度入手,列出了七个分析步骤,并详细解释了每个步骤的重要性。文章还介绍了MySQL的架构图和监控工具,包括`information_schema`和`performance_schema`两个Schema的重要性,以及`SHOW GLOBAL VARIABLES;`和`SHOW GLOBAL status;`两个命令的用法。此外,作者还详细介绍了一个全局分析工具mysqlreport,并解释了其生成的文本文件中包含的内容,如索引报表、操作报表和查询和排序报表。这些报表提供了数据库的关键性能指标,如Key Buffer的使用情况、操作量、慢日志情况以及查询和排序情况。通过这些报表,读者可以快速了解数据库的性能状况,从而进行性能分析和优化。文章还提供了一些思考题,引发读者对MySQL全局监控工具提供的信息和MySQL状态值与配置值之间关系的思考。 文章通过详细的报表分析和性能优化建议,帮助读者快速了解MySQL数据库性能分析的方法和工具,为读者提供了实用的技术指导。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《性能测试实战 30 讲》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(13)

  • 最新
  • 精选
  • Geek_f93234
    MySQL 中全局监控工具可以给我们提供哪些信息? 索引报表、操作报表、查询和排序报表、查询缓存报表、表锁报表、表信息报表、连接报表和临时报表、线程报表、innodb缓存池报表、innodb锁报表、 如何判断 MySQL 状态值和配置值之间的关系呢? SHOW GLOBAL VARIABLES;用来查看配置的参数值,和SHOW GLOBAL status;用来查询状态值 测试结束后通过mysql监控工具查看和分析状态值,从而判断数据库配置值是否合理

    作者回复: 非常正确。

    2020-02-11
    12
  • 蔡森冉
    看到这里真是测试方向从一个坑到另一个坑的过程,没有开发基础真的不行,前两天刚搞jmeter+influxdb++grafana,接着是找了系统监控相关的代码和中间件基本上不了解,然后到数据库。这个过程中数据库中数据拿到如何看看完这篇了解了一些。但是回想一下前面几个怎么分析又完全被不知道了。分析每一个方面的需要关注的数据如何分析,这成为了最难的学习内容,就像老师常说工具不重要,关键得到我们想要的,但是对我来说就是图形数据出来了,但是对我就是一堆数据,分析过程关注点,还有场景不同会有什么结果,数据什么场景,正常数据应该是什么样,脑中十万个为什么。。。

    作者回复: 你在开窍的前夜,只需要往前走一小步即可。坚持吧。

    2020-03-24
    11
  • johnny
    老师,我是这样理解的,理解不对的地方老师帮我纠正一下。 如何判断 MySQL 状态值和配置值之间的关系呢? 状态值和配置值: 状态值也称为状态计数器,可以通过show global status命令来查看有哪些状态计数器。 配置值也称为配置参数,可以通过show global variables命令来查看有哪些配置参数。 两者关系: 状态值一定程度上反映了配置值的合理性。 比如Max_used_connections是一个状态值,它反映了配置值max_connections的合理性; 在比如Open_tables是一个状态值,它反映了配置值table_open_cache的合理性,但是不能看到Open_tables过高就去调整table_open_cache,因为有可能是其它原因导致的。 所以说分析状态值超过既定指标的原因,我们除了要分析配置值外,还要分析sql语句或者其它组件。

    作者回复: 理解得非常对。

    2021-06-24
    4
  • LQQ
    老师 请教一个问题,文中提到的状态计数器、打开表、查询缓存等数据给刷新一下,具体怎么刷新?

    作者回复: flush 命令,你查一下。

    2020-06-30
    4
  • 新思维
    看完文章觉得对一个性能测试工程师的要求太高了,需要把报表中的每个参数的意思都得搞懂,达到了对DBA的要求

    作者回复: 是对一个性能测试团队的要求。 如果一个人足够努力也可以做得到的。

    2020-03-15
    4
  • jy
    老师,请教下:文中“在这个性能场景中,慢日志太多了,需要定向监控看慢 SQL,找到慢 SQL 的执行计划”,是不是需要先把慢查询日志开启?设置慢查询的阈值? 这样才可以在全局监控中看到有慢日志

    作者回复: 慢查询日志是每个mysql都应该在部署时开启的。在我们这个项目中一开始就把这些需要监控的点做了梳理了。

    2021-05-18
    1
  • 若丶相依
    运维看的津津有味。

    作者回复: 只要是技术都是相通的,职位嘛,那是21世纪才有的东西。哈哈。

    2020-10-17
    1
  • 月亮和六便士
    老师,一条SQL语句(插入语句)单执行特别快,高并发很慢,这种情况是不是锁等待造成的?还是老规矩看执行计划?

    作者回复: 可不,还是老规矩。

    2020-04-25
    1
  • 廖志勇
    你好,老师 ,有两个问题请教下: 1、mysqlreport 是否需要管理员权限(网上没有找到相关资料)。我们数据库管的严,管理源权限不开放,查询出来的结果始终不变的,比如开启慢查询了,但是慢查询比例一直为0。但是查apm工具,明显有慢sql 2、我们的数据库服务器有个多个项目数据库,mysqreport 只能是查询整个数据库服务器的数据指标?是否可以统计特点的项目库指标?

    作者回复: 1. 有性能字典表查询权限的数据库用户就可以。 有慢sql但又看不到,可能是因为设置的阈值不同。 2. 好像不能。

    2022-10-23归属地:广东
  • 问号和感叹号
    mysqlreport怎么安装呢 windows和linux下都尝试过 各种不成功。。。

    作者回复: 这个......那个......,还是问下度娘吧。

    2022-07-04归属地:北京
收起评论
显示
设置
留言
13
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部