性能优化简介
很多人对此很迷茫。加入你认为性能优化是降低CPU利用率,那么可以减少对资源的使用。但是这是一个陷阱,资源是用力啊消耗并用来工作的,所以有时候消耗更多的资源能够加快查询速度。CPU利用率只是一种现象,而不是很好的可度量的目标。
如果目标是降低响应时间,那么就需要理解为什么服务器执行查询需要这么多时间,然后减少或消除那些对获得查询结果来说不必要的工作。也就是说,要搞清楚时间花在哪里。这就引申出第二个原则:无法测量就无法有效优化。所以第一步应该测量时间花在什么地方。
测量是一项很有挑战性的工作,并且分析结果也同样有挑战性,测出时间花在哪里,和知道为什么花在那里,是两码事。
完成一项任务所需要的时间可以分为两部分:执行时间和等待时间。如果要优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务、降低子任务的执行频率或者提升子任务的效率。而优化任务的等待时间则相对要复杂一些,因为等待有可能是其他系统间接影响导致。
通过性能剖析进行优化
性能剖析一般有两个步骤:测量任务所花费的时间,然后对结果进行统计和排序,将重要的任务排到前面。
值得优化的查询
如果优化的成本大于收益,就应当停止优化。