这一章主讲了性能剖析,对于我这种大厂的业务研发螺丝钉而言着实用不太上,简单记几个点。
定义性能最有效的方法是响应时间
测量的最佳开始点是应用程序,而不是数据库
优化和提升是两回事,当继续提升的成本超过收益的时候,应当停止优化
SHOW PROFILE
命令
SHOW PROFILE
命令是MySQL5.1以后引入的,默认是禁用的,可以通过SET profiling = 1;
在会话级别动态修改。
执行完一条语句后,可以通过SHOW PROFILES;
命令查看该条语句的性能分析
还是可以通过指定query id 查询具体某个query每个步骤的消耗 , 如:SHOW PROFILE FOR QUERY 1;
如果需要对结果进行一些格式化输出,可有直接访问INFORMATION_SCHEMA中的PROFILING表,如:SELECT * FROM INFORMATION_SCHEMA.PROFILING WHERE QUERY_ID = 1;
SHOW STATUS
命令
SHOW STATUS
命令返回一些数据库操作的执行次数,相当于一个计数器。如果使用SHOW GLOBAL STATUS
命令,则可返回自服务器启动时,所有计算的查询次数统计。需要注意的是,部分全局计数器也会出现在SHOW STATUS
的结果中,所以不要笃定SHOW STATUS
是会话级别的结果。SHOW PROCESSLIST
命令
SHOW PROCESSLIST
可以用来查询线程的状态,以发现是否有大量线程出于不正常的状态。作者在本章的最后详细讲述了为一个客户排查解决问题的过程,问题的详细原因可能对我们不太有借鉴意义。但是排查问题的思路和意识是值得我们学习的。