日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

查询CPU占用高的SQL语句的解决方案

發(fā)布時間:2023/12/10 数据库 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 查询CPU占用高的SQL语句的解决方案 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

觸發(fā)器造成死鎖、作業(yè)多且頻繁、中間表的大量使用、游標(biāo)的大量使用、索引的設(shè)計不合理、事務(wù)操作頻繁、SQL語句設(shè)計不合理,都會造成查詢效率低下、影響服務(wù)器性能的發(fā)揮。我們可以使用sql server自帶的性能分析追蹤工具sql profiler分析數(shù)據(jù)庫設(shè)計所產(chǎn)生問題的來源,進(jìn)行有針對性的處理;下面小編收集了SQL Server中如何查詢CPU占用高的SQL語句,希望大大家能有所幫助。

注意:SQL Server中查詢CPU占用高的情況,經(jīng)常會用到sys.sysprocesses?,dm_exec_sessions?,dm_exec_requests

1、查看當(dāng)前的數(shù)據(jù)庫用戶連接數(shù)

USE?master

GO

SELECT?*?FROM?sys.[sysprocesses]?WHERE?[spid]>50?--AND?DB_NAME([dbid])='gposdb'

SELECT?COUNT(*)?FROM?[sys].[dm_exec_sessions]?WHERE?[session_id]>50

2、選取前10個最耗CPU時間的會話

SELECT TOP 10[session_id],[request_id],[start_time] AS '開始時間',[status] AS '狀態(tài)',

[command] AS '命令',dest.[text] AS 'sql語句', DB_NAME([database_id]) AS '數(shù)據(jù)庫名',

[blocking_session_id] AS '正在阻塞其他會話的會話ID',[wait_type] AS '等待資源類型',

[wait_time] AS '等待時間',[wait_resource] AS '等待的資源',[reads] AS '物理讀次數(shù)',

[writes] AS '寫次數(shù)',[logical_reads] AS '邏輯讀次數(shù)',[row_count] AS '返回結(jié)果行數(shù)'

FROM sys.[dm_exec_requests] AS der CROSS APPLY

sys.[dm_exec_sql_text](der.[sql_handle]) AS dest

WHERE [session_id]>50 AND DB_NAME(der.[database_id])='gposdb'

ORDER BY [cpu_time] DESC

3、查詢前10個最耗CPU時間的SQL語句

--在SSMS里選擇以文本格式顯示結(jié)果

SELECT TOP 10

dest.[text] AS 'sql語句'

FROM sys.[dm_exec_requests] AS der

CROSS APPLY

sys.[dm_exec_sql_text](der.[sql_handle]) AS dest

WHERE [session_id]>50

ORDER BY [cpu_time] DESC

4、查詢CPU占用高的語句

SELECT TOP 10 ? total_worker_time/execution_count AS avg_cpu_cost,

plan_handle, ? execution_count, ? (SELECT SUBSTRING(text,

statement_start_offset/2 + 1, ? ? ?(CASE WHEN statement_end_offset = -1

THEN LEN(CONVERT(nvarchar(max), text)) * 2

ELSE statement_end_offset

END - statement_start_offset)/2)

FROM sys.dm_exec_sql_text(sql_handle)) AS query_text

FROM sys.dm_exec_query_stats

歡迎關(guān)注我的公眾號(同步更新文章):DoNet技術(shù)分享平臺

閱讀原文

總結(jié)

以上是生活随笔為你收集整理的查询CPU占用高的SQL语句的解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。