经常遇到的三个性能相关的服务请求是:(1) 如何确认服务器是否达到了性能最佳的状态(2)找出某条语句为什么执行不够快(3)诊断被用户描述成“停顿”,“堆积”,“卡死”的某些间歇性疑难故障。
1.1 性能优化简介
性能定义:完成某件任务所需要的时间度量。换句话说,性能即响应时间。
完成一项任务所需要的时间分为两部分: 执行时间和等待时间。优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化子任务。优化任务的等待时间,相对复杂一些,因为等待有可能是由系统间接影响导致,任务之间也可能由于争用磁盘或者CPU资源而相互影响。
1.2 剖析 mysql 查询
1.2.1 剖析服务器负载
-
捕获 Mysql 的查询到日志文件中
可以通过设置 long_query_time 为 0 来捕获所有的查询,查询的响应时间单位已经可以做到微妙级。
-
分析查询日志
pt-query-digest 慢查询分析日志工具
1.2.2 剖析单条查询
- 使用 show profile
- 使用 show status
- 使用慢查询日志
- 使用 performance schema