概述
什么是性能?
完成某件任务所需要的时间度量,也就是响应时间。
什么是优化?
在一定的工作负载下,尽可能地降低响应时间。
核心:找到时间花在哪里,这很重要。
如何找?
通过测量,所以测量是性能优化的关键方法。
如何测量?
找到系统的可测量点,但首先需要系统可测量化的支持,然而实际情况是系统很少可以做到可测量化。
因为很难进行系统内部测量,所以我们只能尽可能通过外部去测量系统。
另外需要注意是的,无论是内部测量还是外部测量,数据都不一定是百分之百准确的。
举例:如果SQL
慢查了,花费了10s,如果9.6s都在等待磁盘IO,那么追究其他的0.4s就没什么意义。
理解性能优剖析
什么是值得优化的查询
1. 占系统总体性能影响比重大的;
2. 投入成本低于优化后的收入;
异常情况
系统内部的异常
未知的未知
性能优化过程发现了“丢失的时间”,比如:程序内部测量点发现耗时10s,但MySQL
内部测量发现耗时是8s,那么丢失的2s可能就是没有测量到的,需要注意。
注意平均值问题
平均值往往掩盖一些频率小但有性能问题的点
对应用程序剖析
增加测量点本身一定程度上会增加部分开销,但这部分开销如果远小于性能优化的贡献。
轻量级监控:为了尽可能降低性能监控开销,可以增加灰度测量点,只针对n%的概率进行监控。
剖析MySQL
× 慢查日志
× 剖析单条查询