问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何识别最耗资源的SQL

发布网友 发布时间:2022-04-08 06:37

我来回答

3个回答

懂视网 时间:2022-04-08 10:59

profiling=1;

执行要分析的SQL语句

mysql> select count(1) from wechat_employee,Employee;

显示profiles表

mysql> show profiles;

查询结果:

+----------+------------+-----------------------------------------------+
| Query_ID | Duration | Query      |
+----------+------------+-----------------------------------------------+
| 1 | 0.00072975 | select count(1) from wechat_employee,Employee |
| 2 | 0.00028450 | set profiling=1    |
| 3 | 0.00324875 | select count(1) from wechat_employee,Employee |
+----------+------------+-----------------------------------------------+

查询详细信息:

show profile cpu,block io for query 3;

结果:

+--------------------------------+----------+----------+------------+--------------+---------------+
| Status    | Duration | CPU_user | CPU_system | Block_ops_in | Block_ops_out |
+--------------------------------+----------+----------+------------+--------------+---------------+
| starting   | 0.000041 | 0.000000 | 0.000000 |  0 |  0 |
| Waiting for query cache lock | 0.000073 | 0.000000 | 0.000000 |  0 |  0 |
| checking query cache for query | 0.000025 | 0.000000 | 0.000000 |  0 |  0 |
| checking privileges on cached | 0.000023 | 0.000000 | 0.000000 |  0 |  0 |
| checking permissions  | 0.000018 | 0.000000 | 0.000000 |  0 |  0 |
| checking permissions  | 0.000012 | 0.000000 | 0.000000 |  0 |  0 |
| sending cached result to clien | 0.003009 | 0.000000 | 0.004000 |  0 |  0 |
| logging slow query  | 0.000032 | 0.000000 | 0.000000 |  0 |  0 |
| cleaning up   | 0.000018 | 0.000000 | 0.000000 |  0 |  0 |
+--------------------------------+----------+----------+------------+--------------+---------------+
9 rows in set (0.00 sec)

版权声明:本文为博主原创文章,未经博主允许不得转载。

使用Profiles分析SQL语句执行时间和消耗资源

标签:mysql   profiling   

热心网友 时间:2022-04-08 08:07

执行最慢的SQL语句

SELECT

(total_elapsed_time / execution_count)/1000 N'平均时间ms'

,total_elapsed_time/1000 N'总花费时间ms'

,total_worker_time/1000 N'所用的CPU总时间ms'

,total_physical_reads N'物理读取总次数'

,total_logical_reads/execution_count N'每次逻辑读次数'

,total_logical_reads N'逻辑读取总次数'

,total_logical_writes N'逻辑写入总次数'

,execution_count N'执行次数'

,SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(st.text)

ELSE qs.statement_end_offset END

- qs.statement_start_offset)/2) + 1) N'执行语句'

,creation_time N'语句编译时间'

,last_execution_time N'上次执行时间'

FROM

sys.dm_exec_query_stats AS qs CROSS APPLY
sys.dm_exec_sql_text(qs.sql_handle) st

WHERE

SUBSTRING(st.text, (qs.statement_start_offset/2) + 1,

((CASE statement_end_offset

WHEN -1 THEN DATALENGTH(st.text)

ELSE qs.statement_end_offset END

- qs.statement_start_offset)/2) + 1) not like '�tch%'

ORDER BY

total_elapsed_time / execution_count DESC;

--总耗CPU最多的前个SQL:
SELECT TOP
20

total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],

qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],

last_execution_time AS [最后一次执行时间],max_worker_time /1000 AS [最大执行时间(ms)],

SUBSTRING(qt.text,qs.statement_start_offset/2+1,
(CASE WHEN
qs.statement_end_offset = -1
THEN DATALENGTH(qt.text)
ELSE
qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
AS [使用CPU的语法], qt.text [完整语法],
qt.dbid, dbname=db_name(qt.dbid),

qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs
WITH(nolock)
CROSS apply
sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1
ORDER BY total_worker_time DESC

--平均耗CPU最多的前个SQL:
SELECT TOP 20

total_worker_time/1000 AS [总消耗CPU 时间(ms)],execution_count [运行次数],

qs.total_worker_time/qs.execution_count/1000 AS [平均消耗CPU 时间(ms)],

last_execution_time AS [最后一次执行时间],min_worker_time /1000 AS [最小执行时间(ms)],

max_worker_time /1000 AS [最大执行时间(ms)],

SUBSTRING(qt.text,qs.statement_start_offset/2+1,
(CASE WHEN
qs.statement_end_offset = -1
THEN DATALENGTH(qt.text)
ELSE
qs.statement_end_offset END -qs.statement_start_offset)/2 + 1)
AS [使用CPU的语法], qt.text [完整语法],
qt.dbid, dbname=db_name(qt.dbid),

qt.objectid,object_name(qt.objectid,qt.dbid) ObjectName
FROM sys.dm_exec_query_stats qs
WITH(nolock)
CROSS apply
sys.dm_exec_sql_text(qs.sql_handle) AS qt
WHERE execution_count>1
ORDER BY
(qs.total_worker_time/qs.execution_count/1000) DESC

热心网友 时间:2022-04-08 09:25

1,看执行计划里面的cost值,作为参考
2,看sql的执行时间。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
畅享好还是荣耀好 怎么向老师请教问题?? ...和是40.15较大数的小数点向左移动一位就等于较小的数,这两_百度知... 两个数的和是40.15,较大数的小数点向左移动一位就等于较小的数这两... 两个数的和是40.15,较大的数的小数点像向左移动一位就等于较小的数... 两个数的和是40.15,较大数的小数点向左移动一位等于较小的数 ...和是40.15较大数的小数点向左移动一位就等于较小的数这两个数分别... 怎么用手机查询农行信用卡余额? 朝阳公园附近有孩子可以托管的地方吗? 华泰证券怎么添加第二张银行卡 上课迟到的检讨书。要有时间,地点,过程 早上出勤迟到了,五百字检讨… 求一个早读迟到检讨书,要求接近2000. 老师说我平时行为懒散:偶尔旷课,经常早读迟到,上课睡觉,影响组员学习。要我写一篇检讨书400左右,跪求 早读课迟到 300字检讨怎么写?!!! 早读迟到的检讨书 早读迟到了检讨怎么写 关于早读课迟到的检讨书 电磁炉的一般尺寸 电磁炉怎么调小火和大火? 触屏苏泊尔电磁炉怎样调节火力大小?没有滑条。 电磁炉火力太猛,怎么调到小火? WPS表格中开发工具是做什么的?有哪些用途?急求答案... WPS表格里,如何使选定一个单元格时,其对应单元格也会相应变化。如何用vba编程 wps表格编程有没有单元格触发事件 WPS 表格 编程问题。 wps表格编程 wps版的Excel可以编程吗?怎样编呢? WPS表格中用VBA,两数之差再除以第三个数的编程代码怎么设置? 电脑上误删的图片用什么方法能找回! 笔记本指纹不可用且pin不能用进不去系统怎么办- 问一问 佛跳墙里面像花生的是什么 佛跳墙里的粉丝是什么 一个绞丝旁一个弟念什么 绞丝旁+弟读什么 绞丝边旁一个弟 怎么念 绞丝加弟念什么 绞丝旁一个弟弟的弟是什么字 左边“纟”,右边“弟”,是个什么字? 绞丝旁加上弟弟的弟什么字 绞丝旁一个弟是什么意思? 左边绞丝旁右边弟,合一起是啥字? 什么是绩效管理流程? 一个绞丝旁加一个息是什么字? 高效的绩效管理流程包括哪些环节 年级的级字为什么是纟旁 一个绞丝旁,旁边再一个弟是什么字,怎么读 绩效管理的规定和流程各是什么? 绞丝旁一个泉读什么 在数据库中查看一个SQL执行一次耗时多少