【学习笔记】《高性能MYSQL》对性能优化定义

来源:互联网 发布:me直播软件 编辑:程序博客网 时间:2024/05/29 15:56
本文属于读书笔记,大部分内容摘抄于《高性能MYSQL》,摘抄内容版权属于原作者。

在《高性能mysql》中将西能定义为完成某件任务所需要的时间度量,换句话说,性能即响应时间。按照这个定义,我们通过任务和时间而不是资源来测量性能。原因是数据库服务器的目的是执行SQL语句,所以它关注的任务是查询或者语句,如SELECT、UPDATE、DELETE等。数据库服务器的性能用查询的响应时间来度量,单位是每个查询花费的时间。

而优化的定义被假定是在一定的功能做负载下尽可能地降低响应时间。很多时候我们认为性能优化就是降低CPU利用率,那么可以减少对资源的使用。但是实际上资源就是用来消耗工作的,所以哟逇时候消耗更多的资源能够加快查询速度。CPU利用率只是一种现象,而不是很好的可度量的目标。

同样如果把性能优化仅仅看成是替身美妙查询量,这其实只是吞吐量的优化。吞吐量的提升在某种程度上来说,只是性能优化的副产品。对查询的优化可以让服务器每秒执行更多的查询,因为每条查询执行的时间更短了(吞吐量的定义是单位时间内的查询数量,这正好是我们队性能的定义的倒数)。

所以如果目标是降低响应时间,那么久需要理解为什么服务器执行查询需要这么多时间。然后去减少或者消除这些对获得查询结果来说不必要的工作。也就是说,先要搞清楚事件花在哪里。这就引申出优化的第二个原则:无法测量的就无法有效的优化。所以第一步应该是测量时间花在哪里。

而测量时间需要合适的测量范围。合适的测量范围是说只测量需要优化的活动。有两种比较常见的情况会导致不合适的测量:
  • 在错误的时间启动和停止测量。
  • 测量的是聚合后的信息,而不是活动本身。

完成一项任务所需要的时间可以分为两部分:执行时间和等待时间。如果要优化任务的执行时间,最好的办法是通过测量定位不同的子任务花费的时间,然后优化去掉一些子任务、减低子任务的执行频率或者替身子任务的效率。而油画人物的等待时间则相对要复杂一些,因为等待有可能是由其他系统简介营销导致,任务之间也可能由于征用磁盘或者CPU而互相影响。根据时间花在执行还是等待上的不同,诊断也需要不同的工具和技术。

1 0
原创粉丝点击