show profile

Show Profile 是 MySQL 提供的可以用来分析当前查询 SQL 语句执行的资源消耗情况的工具,可用于 SQL 调优的测量。默认情况下处于关闭状态,开启会消耗一定的性能,一般在 SQL 分析和优化的时候使用,只保存最近15次的运行结果。
默认该功能是关闭的,使用前需提前开启Show Profile功能。

show variables like 'profiling';

在这里插入图片描述
这个开启状态是session级别,意思就是你如果没有使用过一会会自动关闭
set profiling=on;

show profiles;

在这里插入图片描述

查询语句

 select o.*,oi.collect_time collectTime,oi.deliver_time deliverTime,oi.fee_confirm_time feeConfirmTime,
oi.fee_delivered_time feeDeliveredTime,oi.sender_contact senderContact,oi.receiver_contact receiverContact,
oi.collect_sign signUrl,oi.arrival_sign arrivalSignUrl,concat(sa.province,sa.city,sa.district) senderAddress,
concat(ra.province,ra.city,ra.district) receiverAddress,sa.province senderProvince,sa.city senderCity,
sa.district senderCounty,ra.province receiverProvince,ra.city receiverCity,ra.district receiverCounty,co.driver_name driverName,
co.driver_phone driverPhone,co.vehicle_serial vehicleSerial,ciq.tms_bid_id tmsBidId,tr.vehicle_type_code,
tr.vehicle_type_name,tr.weight_type_code from  ( select o.* from tl_order o  where  1=1 and o.order_status!= 'ORDER_STATUS_CANCEL'  and o.create_time>= '2023-01-30 00:00:00'
and o.create_time <= '2023-03-01 23:59:59'     and o.capacity_type = 'tms'   and (  o.dept_tree like concat('001|','%') )
and IFNULL(o.business_type,'') <> "CARTRANSPORT"  
and (o.client_code is null or o.client_code not in ('SP616-JNC','SHENZHENAIRLINES'))  
and o.order_status not in ('ORDER_STATUS_TODO','ORDER_STATUS_REJECT')
 order by o.create_time desc         limit 0,20  ) o   left join tl_order_info oi on o.order_id = oi.order_id  
left join tl_address sa on sa.order_id = o.order_id and sa.addresss_type = '1' 
left join tl_address ra on ra.order_id = o.order_id and ra.addresss_type = '3' 
left join tl_capacity_order co on co.order_id = o.order_id  
left join ci_inquiry ciq on ciq.inquiry_no = o.inquiry_no 
left join tl_require_vehicle tr on tr.order_id = o.order_id;

通过 Show Profiles查看结果
在这里插入图片描述

使用 Show Profile对sql语句进行诊断

此处的Query_ID就是show profiles 查询到的Query_ID

show profile cpu,block io for query 3;

在这里插入图片描述

Show Profile的常用查询参数

①ALL:显示所有的开销信息。

②BLOCK IO:显示块IO开销。

③CONTEXT SWITCHES:上下文切换开销。

④CPU:显示CPU开销信息。

⑤IPC:显示发送和接收开销信息。

⑥MEMORY:显示内存开销信息。

⑦PAGE FAULTS:显示页面错误开销信息。

⑧SOURCE:显示和Source_function,Source_file,Source_line相关的开销信息。

日常开发需注意的结论

①Converting HEAP to MyISAM:查询结果太大,内存不够,数据往磁盘上搬了。

②Creating tmp table:创建临时表。先拷贝数据到临时表,用完后再删除临时表。

③Copying to tmp table on disk:把内存中临时表复制到磁盘上,危险!!!

④locked。

如果在Show Profile诊断结果中出现了以上4条结果中的任何一条,则SQL语句需要优化。

注意

1.Show Profile默认是关闭的,并且开启后只存活于当前会话,也就说每次使用前都需要开启。也可修改MYSQL配置文件来修改。

2.通过Show Profiles查看sql语句的耗时时间,然后通过Show Profile命令对耗时时间长的sql语句进行诊断。

3.注意Show Profile诊断结果中出现相关字段的含义,判断是否需要优化SQL语句。

参考
https://blog.csdn.net/weixin_42480750/article/details/123599994

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值