MySQL 运维实战课
15
15
1.0x
00:00/00:00
登录|注册

13|定位MySQL问题的思路:数据库为什么慢了?

你好,我是俊达。
作为一名 DBA,在使用和运维 MySQL 的十多年里,我遇到过很多各种各样的问题,比如:
平时执行很正常的一些 SQL,不知道什么原因,突然都变慢了。
数据库变得很慢,就是连接到数据库这么简单的操作都需要好几秒,有时甚至会超时。
应用系统发布了新的版本,SQL 好像也没有做大的调整,但是数据库负载就是上涨了很多。
执行某个 SQL 为什么需要花这么长的时间,总选不到更好的执行计划。
这些都是比较常见的情况,你平时在使用 MySQL 时,是否也遇到过类似的问题呢?在这一讲中,我们将提供一些比较通用的方法,用来分析和定位 MySQL 的各种性能问题。

通用问题分析框架

把大象放入冰箱只需要几个简单的步骤:一是打开冰箱门,二是将大象放入冰箱,三是关上冰箱门。在分析 MySQL 相关问题时,我们也采取类似的步骤,首先,了解问题,然后分析 MySQL 运行环境的问题,再分析 MySQL 数据库,最后分析访问数据库的客户端的问题。

了解问题本身

在正式开始解决问题之前,你需要先了解问题本身。
问题是不是正在发生?是当前有问题,还是过去某些时间出现了问题?
收集问题的详细信息。问题的现象是什么,问题出现的时间有什么规律吗?
如果有报错,记录详细的报错信息,特别是跟数据库相关的报错信息,如错误编号、错误文本。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
  • 解释
  • 总结

1. MySQL性能问题的常见情况包括SQL突然变慢、数据库连接变慢、数据库负载上升等。 2. 分析MySQL性能问题的通用框架包括了解问题本身、分析操作系统资源使用情况和分析MySQL运行情况。 3. 使用工具如pt-query-digest对慢SQL进行统计分析,以及在备库上进行查询语句的执行计划分析。 4. 通过performance schema中的表,如events_statements_summary_by_digest,记录语句执行的汇总信息,查询语句在一个时间段内的执行情况。 5. 建议使用InnoDB存储引擎,并观察InnoDB的整体运行情况,如信号量和闩锁信息、事务信息、文件IO线程和IO请求、Insert Buffer和自适应哈希索引、Redo日志、Buffer Pool、行操作记录。 6. 通过监控Redo日志的日志序列号差值来判断checkpoint是否跟得上数据写入的速度,从而影响数据库的吞吐量。 7. 使用监控系统记录MySQL的Status变量,建立一套基线,以便分析和诊断数据库问题。 8. MySQL错误日志中记录了一些无法从其他地方获取的信息,可以作为排查问题的参考。 9. 有些时候,问题可能不一定出现在数据库内部,而是出现在访问数据库的客户端那一侧,也需要进行分析。 10. 通过系统地分析操作系统和MySQL的指标、日志、内部状态,大多数情况下都能找到问题的根源。

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

精选留言

由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论
显示
设置
留言
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部
文章页面操作
MAC
windows
作用
esc
esc
退出沉浸式阅读
shift + f
f11
进入/退出沉浸式
command + ⬆️
home
滚动到页面顶部
command + ⬇️
end
滚动到页面底部
⬅️ (仅针对订阅)
⬅️ (仅针对订阅)
上一篇
➡️ (仅针对订阅)
➡️ (仅针对订阅)
下一篇
command + j
page up
向下滚动一屏
command + k
page down
向上滚动一屏
p
p
音频播放/暂停
j
j
向下滚动一点
k
k
向上滚动一点
空格
空格
向下滚动一屏
播放器操作
MAC
windows
作用
esc
esc
退出全屏
⬅️
⬅️
快退
➡️
➡️
快进
空格
空格
视频播放/暂停(视频全屏时生效)