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
- Seata 全域性鎖等待超時 問題排查
- MySQL 死鎖問題分析MySql
- 由select for update鎖等待問題引發的深入思考
- MySQL鎖問題分析-全域性讀鎖MySql
- guava cache大量的WARN日誌的問題分析Guava
- 故障分析 | MySQL鎖等待超時一例分析MySql
- MySQL資料庫故障分析-鎖等待(一)MySql資料庫
- Mysql DDL出現長時間等待MDL問題分析MySql
- [20191203]大量resmgrcpu quantum等待事件.txt事件
- MySQL 死鎖和鎖等待MySql
- tempdb日誌檔案暴增分析
- tempdb資料檔案暴增分析
- SHARED POOL中KGH: NOACCESS佔用大量記憶體的問題分析記憶體
- 手把手教你分析解決MySQL死鎖問題MySql
- 關於SQLServer的tempdb的資料檔案暴增問題(1)SQLServer
- 什麼是鎖?深入分析解讀MySQL鎖,解決幻讀問題!MySql
- synchronized鎖重入問題synchronized
- MySQL死鎖問題MySql
- ORACLE 資料庫11.2.0.4 單例項伺服器IO等待高問題分析Oracle資料庫單例伺服器
- Slave SQL執行緒與PXB FTWRL死鎖問題分析SQL執行緒
- 從一個死鎖問題分析最佳化器特性
- 檢視MySQL鎖等待的原因MySql
- pthread_mutex 鎖問題threadMutex
- JDBC用ResultSet訪問大量資料時會遇到的問題JDBC
- ssh登入慢,等待時間長的問題
- 一個有趣的鎖問題
- SpringBoot Seata 死鎖問題排查Spring Boot
- mysql insert into ... select的鎖問題MySql
- java鎖的問題速通Java
- JUC之讀寫鎖問題
- 測試MySQL鎖的問題MySql
- laravel 排他鎖 lockForUpdate() 使用問題Laravel
- Python | 淺談併發鎖與死鎖問題Python
- CXPACKET等待型別分析型別
- ClientAbortException 問題分析clientException
- C# UDP通訊 ReceiveAsync() 一直等待問題C#UDP
- MySQL死鎖系列-線上死鎖問題排查思路MySql