SQLServer的tempdb暴增導致磁碟消耗的處理方案
先查長事務:
SELECT transaction_id,session_id
FROM sys.dm_tran_active_snapshot_database_transactions
ORDER BY elapsed_time_seconds DESC;
再看這些會話執行了多久:
SELECT
es.session_id,
--database_name ='HKERP',
login_name,
er.status,
wait_type,
individual_query = SUBSTRING (qt.text, er.statement_start_offset/2, (CASE WHEN er.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qt.text)) * 2 ELSE er.statement_end_offset END - er.statement_start_offset)/2),
parent_query = qt.text,
program_name,
host_name,
nt_domain,
start_time
FROM
sys.dm_exec_requests er
INNER JOIN sys.dm_exec_sessions es ON er.session_id = es.session_id
CROSS APPLY sys.dm_exec_sql_text(er.sql_handle)as qt
WHERE
es.session_id > 50
AND es.session_Id NOT IN (@@SPID)
ORDER BY
1, 2
看看有沒阻塞:
SELECT s.loginame
,[Individual Query] = SUBSTRING (qr.text,qs.statement_start_offset/2,
(CASE WHEN qs.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), qr.text)) * 2
ELSE qs.statement_end_offset
END - qs.statement_start_offset)/2)
,qs.session_id ,s.counts AS [程式個數],qs.status ,qs.blocking_session_id
,qs.wait_type ,qs.wait_time ,qs.wait_resource
,qs.transaction_id
FROM SYS.DM_EXEC_REQUESTS qs (nolock)
LEFT JOIN (
SELECT spid,MAX(loginame)AS loginame,COUNT(0)AS counts FROM SYS.SYSPROCESSES (nolock) GROUP BY spid
) s ON qs.session_id=s.spid
OUTER APPLY SYS.DM_EXEC_SQL_TEXT(qs.sql_handle) AS qr
WHERE qs.status = N'suspended'
--and s.loginame<>''
ORDER BY qs.wait_time DESC
--查詢阻塞源頭v3.0
SELECT SP.spid
,CASE WHEN ST1.text IS NULL THEN ST2.text
ELSE SUBSTRING (ST1.text,SR.statement_start_offset/2,
(
CASE WHEN SR.statement_end_offset = -1 THEN LEN(CONVERT(NVARCHAR(MAX), ST1.text)) * 2
ELSE SR.statement_end_offset
END - SR.statement_start_offset)/2
)
END AS [T-sql]
,SP.loginame
,DB_NAME(SP.dbid) AS [db_name]
,SP.open_tran,SP.hostname,SP.program_name,SP.waitresource,SP.*
FROM SYS.SYSPROCESSES SP (nolock)
LEFT JOIN SYS.DM_EXEC_REQUESTS SR (nolock) ON SP.spid=SR.session_id
LEFT JOIN SYS.DM_EXEC_CONNECTIONS SC (nolock) ON SP.spid=SC.session_id
OUTER APPLY SYS.DM_EXEC_SQL_TEXT(SC.most_recent_sql_handle) AS ST2
OUTER APPLY SYS.DM_EXEC_SQL_TEXT(SR.sql_handle) AS ST1
WHERE SP.spid IN
(
SELECT BLOCKED FROM SYS.SYSPROCESSES (nolock) WHERE BLOCKED<>0 and lastwaittype<>'MISCELLANEOUS'
)
AND SP.BLOCKED=0
殺了阻塞源,或者是長事務,一般就能解決問題了。
同時對比tempdb前後的使用情況。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/22996654/viewspace-2998570/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 關於SQLServer的tempdb的資料檔案暴增問題(1)SQLServer
- OGG相關的CPATURE導致SYSAUX表空間異常暴增處理UX
- tempdb日誌檔案暴增分析
- tempdb資料檔案暴增分析
- 磁碟IO故障導致的SQLServer資料庫無法寫入SQLServer資料庫
- Sqlserver定位哪些物件和哪些會話哪些sql語句消耗了tempdbSQLServer物件會話
- 如何處理快取導致的無效曝光快取
- raid磁碟陣列OFFLINE後的應急處理方案AI陣列
- 併發請求導致的業務處理安全風險及解決方案求導
- 系統crash掉導致ORA-00600的處理
- 一個導致JVM實體記憶體消耗大的BugJVM記憶體
- 使用資料庫處理併發可能導致的問題資料庫
- MySQL 磁碟空間滿導致表空間相關資料檔案損壞故障處理MySql
- 如何在 Swift 中優雅的處理閉包導致的迴圈引用Swift
- jenkins導致硬碟佔用滿了如何處理Jenkins硬碟
- sqlldr標準輸出未處理導致批處理掛起問題SQL
- SQLServer如何釋放tempdb臨時表空間SQLServer
- Runtime PM 處理不當導致的 external abort on non-linefetch 案例分享
- 故障分析 | MySQL convert 函式導致的字符集報錯處理MySql函式
- 如何在SQLServer中處理每天四億三千萬記錄的SQLServer
- 磁碟IO過高時的處理辦法
- 處理SQLServer errorlog滿問題SQLServerError
- 介面自動化覆蓋的功能,但是導致漏測瞭如何處理
- DevExpress 的LayoutControl控制元件導致資源無法釋放的問題處理devExpress控制元件
- 儲存崩潰導致資料丟失如何處理
- SQLServer如何查詢近3分鐘最消耗CPU的SQLSQLServer
- SQLServer行版本資訊吃資料庫tempdb空間SQLServer資料庫
- SqlServer遇到SPN_Service Principal name問題的處理方法SQLServer
- windbg分析一次大查詢導致的記憶體暴漲記憶體
- 關於Cordova框架對URL攔截導致通訊丟失問題的處理框架
- 【譯】Gradle 的依賴關係處理不當,可能導致你編譯異常Gradle編譯
- [20201104]磁碟空間消耗在哪裡.txt
- 記一次非同步處理導致Jetty Request物件洩漏非同步Jetty物件
- hbase 故障的處理方案。 (轉載文章)
- 分散式事務處理方案,微服事務處理方案分散式
- 檢視歸檔暴增的原因
- 雲伺服器系統盤滿導致桌面檔案不見了的處理方法伺服器
- SpringBatch基本的批處理指導原則SpringBAT