最常见的三个性能相关问题;
- 如何确认服务器是否达到了性能最佳的状态。
- 某条语句为什么执行的不够快。
- 如何诊断被用户描述成停顿、堆积、或者卡死的某些间歇性疑难故障。
性能常见指标
- 每秒查询次数。
- CPU利用率。
- 可扩展性。
性能定义;完成某件任务所需要的时间度量,或者说,性能即响应时间。
性能的优化; 在一定的工作负载下尽可能的降低响应时间。
注意;CPU利用率并不是很好的度量性能的指标。单纯的降低CPU利用率会导致资源的减少使用,资源是用来消耗并工作的,有时候消耗更多资源能够带来更快的查询速度。
同样,如果把优化只是当做提升每秒查询量,也只是吞吐量的优化。只能当做是优化的副产品。
对查询的优化可以让服务器每秒执行更多的查询,因为每条查询语句的时间更短了。
优化的目的是降低响应时间,那么首先要明白为什么服务器查询需要那么多的时间,然后减少或者消除那些对查询结果没有必要的工作。(无法测量就无法优化)
很多人优化花很多时间去修改一些东西,而不去关注精确的测量。对症下药才能更好地解决。
测量是一项很有挑战的工作,分析结果同样有挑战性。测出时间花在哪里,知道为什么花在哪里。
要有合适的测量范围,两种情况会导致不合适的测量;
- 在错误的时间启动和停止测量。
- 测量的是聚合后的信息,而不是目标活动本身。
完成一项任务的时间分为两部分;执行时间,等待时间。
优化执行时间,最好方法是通过测量定位不同子任务花费的时间,优化掉一些子任务,降低子任务的执行频率或者提升子任务的效率。
优化等待时间要复杂的多,牵扯到可能由于其他系统间接影响导致。任务间也可能由于争夺磁盘或者CPU资源相互影响。
定位和优化子任务----性能剖析;
性能剖析是测量与分析时间花费在哪里的主要方法;分两步
测量任务花费的时间
对结果进行统计排序,重要的任务排在前面。
性能花费的时间主要通过获取事务启动时开启到事务结束时间差 (时钟)。