关于mysql服务器性能,可能需要关注的点会比较多,如:如何确认服务器是否达到了性能最佳的状态,找出某条语句为什么执行不够快,以及诊断被用户描述成“停顿“,“堆积“或者“卡死“的某些间歇性疑难故障。这看起来很不简单。但是事实证明,有一个简单的方法能够从噪声中发现苗头。
这个方法就是专注于测量服务器的时间花费在哪里,使用的技术则是性能剖析。
mysql性能的问题,可能不同人会有不同的说法。例如:每秒查询数,cpu利用率,可扩展性 等等。
每个人在不同场景对性能有不同的理解。
但在这我们将给出一个正式的定义:
mysql性能指的是完成某件任务所需要的时间的度量,换句话说,性能即响应时间.
性能优化就是在一定得工作负载下尽可能的降低响应时间。
有人认为性能优化是降低cpu利用率,这是一个误解。资源是用来消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度。cpu利用率只是一种现象,而不是很好的可度量的目标。
同样,如果把性能优化仅仅看成提升每秒查询量,这其实只是吞吐量优化。吞吐量的提升可以看做性能优化的副产品。(吞吐量的定义是单位时间内的查询数量,这正好是我们对性能定义的倒数)
优化的第二原则:无法测量就无法有效的优化。所以,第一步应该测量时间花在什么地方。
不合适的测量:
在错误的时间启动和停止测量
测量的是聚合后的信息,而被捕是目标活动本身。
例如一个常见的错误是先查看慢查询,然后又去排查整个服务器的情况来判断问题的所在。
完成一项任务所需要的时间可以分为两部分:执行时间和等待时间。
剖析MySQL查询:
1.剖析服务器负载
捕获mysql的查询到日志文件中
分析查询日志
2.剖析单条查询
使用 show profile
使用 show status
使用 慢查询日志
3.使用性能剖析
总结的关键字有: 响应时间,吞吐量,测量,优化,慢查询日志。