注意:sql server中查詢cpu占用高的情況,經常會用到sys.sysprocesses ,dm_exec_sessions ,dm_exec_requests
1、檢視當前的資料庫使用者連線數
use master
goselect * from sys.[sysprocesses] where [spid]>50 --and db_name([dbid])='gposdb'
select count(*) from [sys].[dm_exec_sessions] where [session_id]>50
2、查cpu使用率前10 的sql語句:
select
top
10
st.text
as
sql_full
--父級完整語句
,
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)
as
sql_part
--統計對應的部分語句
,
cast
( ((qs.total_elapsed_time / 1000000.0)/qs.execution_count)
as
decimal
(28,2) )
as
[平均消耗秒數]
,
cast
(qs.last_elapsed_time / 1000000.0
as
decimal
(28, 2))
as
[最後完成消耗秒數]
, qs.last_execution_time
as
[最後執行時間]
,
cast
(qs.min_elapsed_time / 1000000.0
as
decimal
(28, 2))
as
[最小消耗秒數]
,
cast
(qs.max_elapsed_time / 1000000.0
as
decimal
(28, 2))
as
[最大消耗秒數]
,
cast
(qs.total_elapsed_time / 1000000.0
as
decimal
(28, 2))
as
[總消耗秒數]
, (qs.execution_count)
as
[總執行次數]
, creation_time
as
[編譯計畫的時間]
,
cast
(qs.last_worker_time / 1000000.0
as
decimal
(28, 2))
as
[最後完成占用cpu秒數]
, qp.query_plan
from
sys.dm_exec_query_stats qs
cross
as
st
cross
where
qs.last_execution_time>dateadd(n,-30,getdate())
order
by
qs.last_worker_time
desc
3、查阻塞:
原文出處:
SQL Server中查詢CPU占用高的SQL語句
sql server中查詢cpu占用高的情況,會用到sys.sysprocesses dm exec sessions dm exec requests 一 檢視當前的資料庫使用者連線有多少 use master goselect from sys.sysprocesses where spid 5...
我的SQL裡哪個語句占用的CPU最多
可以使用下面的語句來得到 select substring qt.text qs.statement start offset 2 1,case qs.statement end offset when 1 then datalength qt.text else qs.statement end ...
Mysql 占用cpu資源高的分析
在伺服器上執行命令,將 mysql 當前的環境變數輸出到檔案 output.txt d web mysql mysqld.exe help output.txt 發現 tmp table size 的值是預設的 32m,於是修改 my.ini,將 tmp table size 賦值到 200m d ...