概述

什么是性能?

完成某件任务所需要的时间度量,也就是响应时间。

什么是优化?

在一定的工作负载下,尽可能地降低响应时间。

核心:找到时间花在哪里,这很重要。

如何找?

通过测量,所以测量是性能优化的关键方法。

如何测量?

找到系统的可测量点,但首先需要系统可测量化的支持,然而实际情况是系统很少可以做到可测量化。

因为很难进行系统内部测量,所以我们只能尽可能通过外部去测量系统。

另外需要注意是的,无论是内部测量还是外部测量,数据都不一定是百分之百准确的。

举例:如果SQL慢查了,花费了10s,如果9.6s都在等待磁盘IO,那么追究其他的0.4s就没什么意义。

理解性能优剖析

什么是值得优化的查询

1. 占系统总体性能影响比重大的;
2. 投入成本低于优化后的收入;

异常情况

系统内部的异常

未知的未知

性能优化过程发现了“丢失的时间”,比如:程序内部测量点发现耗时10s,但MySQL内部测量发现耗时是8s,那么丢失的2s可能就是没有测量到的,需要注意。

注意平均值问题

平均值往往掩盖一些频率小但有性能问题的点

对应用程序剖析

增加测量点本身一定程度上会增加部分开销,但这部分开销如果远小于性能优化的贡献。
轻量级监控:为了尽可能降低性能监控开销,可以增加灰度测量点,只针对n%的概率进行监控。

剖析MySQL

× 慢查日志

× 剖析单条查询