tempdb大量閂鎖等待問題分析
現象 1
分析 2
會話等待的資源“2 : 1:xxxxxxx ” 代表 ID為 2 的資料庫( tempdb)的 1號檔案(tempdev)的 xxxx xxx頁。SQL語句建立一個臨時表時,相當於在tempdb中建立一張表 , SQL Server要為這張表分配儲存頁面,需要修改 SGAM、PFS、 GAM系統資料頁,為了 其他表不會分配到同一個資料頁,在修改時使用閂鎖,修改完成後釋放閂鎖。
這種機制對一般的使用者資料庫不會有問題,因為正常的應用不會折騰著不停地建表、刪表。 但是 tempdb 就不同了,經常會有高併發的SQL語句使用臨時表 。因此 在同一個時間點會有很多執行緒要修改系統頁,就會產生大量的 PAGELATCH_U P閂鎖等待。
解決
3
-
檔案個數一定要和CPU核數對齊,也就是能被CPU核數整除。例如是40個核,則可以建立4個、8個、10個、20個等。建議最少4個, 最多 可 以和CP U 的核 數一 樣多,但 一般 的服 務器CPU核數都在幾十 個 ,沒有必要建立這麼多。
-
每個資料檔案的初始大小和增長大小的配置一定要一致,如果不一致,SQL Server將不會平均地使用每個資料檔案,而是先使用容量最大的資料檔案。
tempdb的重要性
4
臨時表、表變數、查詢語句(ORDER BY、GROUP BY、UNION等)、觸發器、索引維護、快照事務隔離級別等很多功能都會用到tempdb,詳細參考微軟官方文件 : 。
最佳實踐 5
對tempdb依賴 較高的實 例,可以 為 te mpdb 單獨 規 劃 一個快 速的 物理 磁 盤,例如SSD ,讓tempdb獨享I/O資源, 不 和 使用者資料 庫 文 件 爭搶,從而加快tempdb的響應速度 。如果伺服器有基於磁碟映象的容災軟體,為tempdb規劃單獨的磁碟的另一個好處是不用把temdp檔案同步到備機。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70023658/viewspace-2936804/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL鎖等待與死鎖問題分析MySql
- 基於oracle11g生成systemstate dump檔案分析持鎖會話有等待鎖會話及閂latch之系列三Oracle會話
- Seata 全域性鎖等待超時 問題排查
- mysql鎖等待查詢分析MySql
- 特定的閂鎖和互斥場景
- MySQL 死鎖問題分析MySql
- Sqlserver分析死鎖問題SQLServer
- 線上死鎖問題分析
- MySQL鎖問題分析-全域性讀鎖MySql
- 【故障-ORACLE】GGS_STICK出來大量鎖的問題Oracle
- guava cache大量的WARN日誌的問題分析Guava
- 由select for update鎖等待問題引發的深入思考
- 用友資料庫錯誤“未能讀取並閂鎖頁(1:3355)(用閂鎖型別SH)”修復資料庫型別
- 故障分析 | MySQL鎖等待超時一例分析MySql
- MySQL資料庫故障分析-鎖等待(一)MySql資料庫
- mysql InnoDB鎖等待的檢視及分析MySql
- 這樣分析一個死鎖問題
- Mysql DDL出現長時間等待MDL問題分析MySql
- 如何解決tempdb 增長過大的問題
- 產生TX鎖等待不同情形的分析
- 全面解析9i以後Oracle Latch閂鎖原理Oracle
- MySQL 死鎖和鎖等待MySql
- 【故障-ORACLE】_NEXT_OBJE Exclusive鎖問題分析OracleOBJ
- RDSforMySQLInnoDB行鎖等待和鎖等待超時的處理ORMMySql
- MongoDB建立大量集合測試問題MongoDB
- tempdb資料檔案暴增分析
- tempdb日誌檔案暴增分析
- 手把手教你分析解決MySQL死鎖問題MySql
- SHARED POOL中KGH: NOACCESS佔用大量記憶體的問題分析記憶體
- 什麼是鎖?深入分析解讀MySQL鎖,解決幻讀問題!MySql
- MySQL Flush導致的等待問題MySql
- synchronized鎖重入問題synchronized
- MySQL死鎖問題MySql
- oracle鎖表問題Oracle
- sqlplus 執行大量sql指令碼時遇到問題分析(很常見)SQL指令碼
- 從一個死鎖問題分析最佳化器特性
- Slave SQL執行緒與PXB FTWRL死鎖問題分析SQL執行緒
- 關於SQLServer的tempdb的資料檔案暴增問題(1)SQLServer