高性能MySQL第三章:服务器性能剖析

本章主要围绕服务器是否达到了性能最佳状态、找出某条语句为什么执行不够快、以及诊断停顿、堆积、或者卡死的间接性故障三个问题来做出解答,幷说明解决问题的一些技巧和好用的工具

一、性能优化简介

性能优化的原则之一是弄清楚什么是性能?性能,有很多的指标用来描述性能的好坏,比如每秒查询次数、CPU利用率、可扩展性等,在本章中,对性能给出了一个正式的定义:“完成某件任务所需要的时间度量即响应时间”。确定了优化的方向,就要确定第二个原则:“无法测量就无法有效的优化”。所有优化的第一步是进行测量,确认时间花在了什么地方。

通过性能剖析进行优化

性能剖析是测量和分析时间花费在哪里的主要方法,一般有两个步骤:测量任务所花费的时间然后对结果进行统计和排序。进行性能剖析,我们需要借助工具来获取任务执行的相关细节,比如mk-query-digest,通过性能剖析报告,我们能获得每一个任务包括人物名,执行时间,消耗时间,平均执行时间以及时间消耗比,通过这些细节数据,我们就能对任务进行分析,幷优化。

我们进行性能剖析一般从两个方面进行出发:基于执行时间出发或基于等待时间出发,具体从哪个发面出发需要通过观察测量的执行时间主要是分布在阻塞等待还是资源执行上。

二、剖析MySQL查询

读MySQL进行剖析,可以从剖析服务器入手,通过对整个暑假库服务器进行剖析,找到哪些查询是主要的压力来源,然后对具体的查询进行单独的剖析,分析哪些任务是响应时间的主要消耗这

1.剖析服务器负载

慢查询日志是这一种轻量且功能全面的性能剖析工具,是优化服务器查询的利器,,我们可以通过设置long_query_time为0来使MySQL自动捕获所有的查询,如果我们因为权限问题,我们无法在服务器上记录查询,我们这里还可以通过抓取tcp网络包然后根据MySQL的通信协议进行解析。

获取到查询日志后,接下来就可以对日志进行分析了,可以通过一些日志分析工具,比如pt-query-digest,只需要将慢查询日志作为参数传递到工具,就可以生成详细的剖析报告,然后我们就能通过报告找到需要进行优化的查询

2.剖析单条查询

剖析单条语句,我们可以使用show status,show profile和检测慢查询日志来进行,使用show profile前,需要通过set profiling=1来开启该功能,通过show profile我们可以知道语句执行的每个步骤及其花费时间,,show profile的数据保存在information_schema中,我们可以通过sql语法对数据按需进行处理,这样更直观。使用show status,我们可以得到一些计数,比如临时表(磁盘表或内存表)的创建次数,用到索引的次数。explain查看执行计划,但也可以得到部分相同的数据,但是不够细致。

3.得到剖析数据后,就可以通过数据对查询进行分析了,通过数据,查到需要优化的具体地方,然后进行具体的优化动作

三、诊断间接性问题

间歇性问题比如系统偶尔停顿或者慢查询,很难诊断,通过试错来重现问题似乎很难如愿,而且时间耗费巨大,本节则介绍了诊断间接性问题的流程和使用的方法及工具

1.确认查询问题还是服务器问题

在解决问题前,我们需要先知道问题出在哪里,只有知道问题在哪里,才能更好的正对性的解决问题

使用show global status,我们可以通过以固定较高的频率来执行这个命令,来捕获数据,出现问题时,我们就可以通过某些计数器比如threads_running、threads_connect的波动来分析问题

使用show processlist来获取线程的状态,来确定是否有大量线程出在不正常的状态,通常通过高频率的执行这两个命令,分析收集到的数据,都可以找到问题所在,然后所做的就是去解决问题了。

总结:本章重要是偏操作性的讲解如何进行服务器数据的收集,剖析,优化,及解决出现的问题。更偏向于向读者提供一个思路,比如,如果想提升服务器性能,那么可以先将所有的查询记录到日志,然后通过分析工具生成剖析报告,如果要追查性能低下的查询,者可以使用show profile或者explain等命令进行语句的分析

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值