知识卡片
阿姆达尔定律给出"值不值得优化"的量化判断标准
内容
性能剖析报告能告诉你哪个查询排名第一、耗时最多,但它不会 自动告诉你”这个查询到底值不值得花时间去优化”——这是两个不同 的问题,前者是测量结果,后者需要另一层判断。阿姆达尔定律给出 了一个直接可用的量化上限:如果某个查询占系统总响应时间的 比重不超过5%,那么无论把这个查询优化到多么极致(哪怕优化到 瞬间完成、耗时归零),整个系统总响应时间的改善幅度也不可能 超过5%——因为这个查询本身能贡献的改善空间,从一开始就被它 占总时间的比例锁死了。这条定律的价值在于把”值得优化”从一种 凭直觉的判断,变成一个可以提前用占比数字算出来的上限:面对 一份按耗时排序的性能剖析报告,与其凭经验挑一个”看起来复杂” 或”看起来该优化”的查询下手,不如先看它占总响应时间的百分比—— 占比越低,理论收益的天花板就越低,投入产出比天然就差。这个 判断标准还能反过来推导出一条更实际的原则:如果预计投入的优化 成本已经超过了这个理论收益上限能带来的业务价值,那么继续 投入就是在做亏本的事——正如书中另一处提到的类比,花1000美元 优化一个对业务收入没有实质提升的任务,等于是让业务倒贴了 1000美元。判断”该不该优化”,本质上就是拿这个上限收益去和 预估的优化成本做比较。
参考来源
- 位置:《高性能MySQL:第3版》第3章"服务器性能剖析"3.1.2节
"理解性能剖析"(源文件:_epub-src/OEBPS/Text/part0010.xhtml)
- 结论依据:原文明确"一些只占总响应时间比重很小的查询是不值得
优化的。根据阿姆达尔定律(Amdahl's Law),对一个占总响应
时间不超过5%的查询进行优化,无论如何努力,收益也不会超过
5%……如果花费了1000美元去优化一个任务,但业务的收入没有
任何增加,那么可以说反而导致业务被逆优化了1000美元。如果
优化的成本大于收益,就应当停止优化",直接给出用占比上限
判断优化价值的量化标准及成本收益权衡原则。
- 原始内容:根据阿姆达尔定律(Amdahl's Law),对一个占总响应
时间不超过5%的查询进行优化,无论如何努力,收益也不会超过
5%。