本文共 846 字,大约阅读时间需要 2 分钟。
事实证明,可以通过一种简单的方法来发现一些苗头:
专注于测量服务器的时间花费在哪,使用的技术是性能剖析。这里将性能定义为:完成某件任务所需的时间度量,即响应时间。性能优化假设就是在一定的工作负载下尽可能降低响应时间。
如果目标是降低响应时间,那么就需要理解为什么服务器执行查询需要这么多时间,然后去减少或者消除那些对获得查询结果来说不必要的工作。所以无法测量就无法有效地优化。
完成一项任务所需要的时间分为:
执行时间
优化执行时间,最好是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务、降低子任务的执行频率或者提升子任务的效率。等待时间
优化等待时间相对复杂。如何确定哪些子任务需要优化,就通过性能剖析。
性能剖析是测量和分析时间花费在哪主要方法。
一般有两个步骤:
主要有两种类型的性能剖析:
基于执行时间的分析
研究的是什么任务执行时间最长基于等待的分析
判断任务在什么地方被阻塞的时间最长当基于执行时间的分析发现一个任务需要花费太多时间的时候,应该深入去分析一下,可能会发现某些“执行时间”实际上是在等待。
MySQL性能剖析会将最重要的任务展示在前面,但有时没有显示的信息也很重要,如
值得优化的查询
一些只占总响应时间比重很小的查询是不值得优化的。如果优化的成本大于收益,就应当停止优化。异常情况
比如某些任务执行次数很少,但每次执行都非常慢,这样总响应时间占比很小。未知的未知
存在“丢失的时间”被掩藏的细节
性能剖析无法显示所有响应时间的分布。可以剖析整个数据库服务器,定位到具体需要优化的查询后,可以钻取下去对这些查询单独剖析。
转载地址:http://sfeiz.baihongyu.com/