第3章服务器性能剖析- 3.3剖析MYSQL查询

3.3剖析MYSQL查询

3.3.1剖析服务器负载

1.捕获MySQL的查询到日志文件中
方法:设置long_query_time=0,捕获所有的查询

2.分析查询日志
首先生成一个剖析报告(pt-query-digest),如果需要,则可以再查看日志中需要特别关注的部分。
(一般将慢查询日志文件作为参数传递给pt-query-digest,就可以正确地工作了)

3.3.2剖析单条查询

1.使用show profile

(在语句执行期间剖析服务器的具体工作)
默认禁用状态,启用命令:set profiling=1;
步骤1:查询语句执行,如select * from sakila.XXX;
步骤2:剖析服务器信息,使用show profiles; 结果会给出query_id,duration,query.找出query 等于 步骤1中的查询语句,记录query_id;
步骤3:
方法一:show profile for query 1; (1是步骤2中记录的query_id)
返回status Duration,是按执行顺序排序的。
方法二:直接查询information_schema对应的表,可以按格式化输出
set @query_id=1;
select status,sum(Duration) as Total_R,
round(
100sum(Duration)/
(select sum(Duration)
from information_schema.profiling
where query_id=@query_id
),2) as Pct_R,
count(
) as Calls,
sum(Duration)/count(*) as “R/Call”
from Information_schema.profiling
where query_id=@query_id
group by state
order by Total_R desc;

status:具体的操作
Total_R:该操作具体的持续时间
Pct_R:该操作持续时间所占总持续时间的百分比,保留2位小数
Calls:该操作次数
R/Call:总持续时间汇总/当前操作次数

round函数的语法是:ROUND(number,num_digits),即:Round(数值,保留的小数位数)
在这里插入图片描述

2.使用show status

show status返回的是计数器(1、服务器级别的全局计数器【全局级】;2、基于某个连接的会话级别计数器【会话级】)

show global status:查看服务器级别的 从服务器启动时开始计算的查询次数统计。

show status作用:在执行完查询后,观察某些计数器的值,可以猜测哪些操作代价较高或者消耗的时间较多。
例子:
步骤1:将会话级别的计数器重置为0,flush status;
步骤2:查询语句执行,如select * from sakila.XXX;
步骤3:使用show status,
如:show status where variable_name like ‘%Handler%’ or Varible_name like ‘Created%’;
结果如下:

在这里插入图片描述
https://dev.mysql.com/doc/refman/5.6/en/server-status-variables.html
在这里插入图片描述

使用慢查询日志

可以将慢查询日志文件作为参数传递给pt-query-digest

使用Performance Schema

3.3.3使用性能剖析
获得服务器或者查询的剖析报告后,

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值