如何衡量性能呢?
既不是吞吐量也不是使用的资源数,这些都是副产品,唯一的标准就是响应时间。响应时间由执行时间和等待时间构成。在做优化时,执行时间可以通过各种方法或者工具分析,但是等待时间就需要一些猜测和验证了
测量的重要性
在各种数据库中都加了很多测量点,因为如果无法测量也就无法优化。测量最佳开始点是应用程序而不是数据库,即使问题出现在数据库,也可以通过良好的测量很容易地发现问题。
测量是不完全,不能穷举,也会出现问题,要尽量知道采用的测量方法的缺陷和优点
剖析
捕捉mysql的查询到日志文件中,即开启慢查询(在生产环境中不建议动态启关慢查询开关),有时候无法在服务器上进行查询,替代方案是通过使用 pt-query-digest 加上--processlist参数查看查询进程,也可以通过抓取TCP网络包(用tcpdump将网络包数据保存),然后使用参数--type=tcpdump
show profiles 分析单个查询,首先需要设置set profiling=1
show status 分析计数器
诊断间歇性问题
先确定是单条服务查询问题还是服务器问题
下面的命令就是每秒捕获一次 shouw global status show processlist 查看是否大量线程处于不正常状态
使用查询日志分析
下面就是每秒将当前时间写入日志中的模式统计每秒的查询数量
捕获诊断数据的原则
可靠且实时的触发器,也就是能区分什么时候问题出现的方法;收集诊断数据的工具
备注:非常好用的工具 new relic,一键分析诊断