像 SQL Server 這樣的資料庫管理系統依賴於檔案輸入/輸出操作的及時進行。有故障或配置不當的硬體、韌體設定、篩選器驅動程式、壓縮、程式錯誤以及 I/O 路徑內的其他情況都可能導致阻塞或延遲 I/O 問題,並且很快對 SQL Server 效能產生消極影響。
上述問題對 SQL Server 的影響因問題細節的不同而差異很大,但它們通常導致阻塞、鎖存器爭用和逾時、過長的回應時間以及資源的過度利用。
阻塞 I/O 是指必須進行外部幹預才能完成的 I/O 請求(通常是 I/O 請求包 (IRP))。這種狀況通常需要執行完整的系統重新啟動或類似操作才能解決,並且強烈表明硬體有故障或者在 I/O 路徑組件中存在程式錯誤。
延遲 I/O 是指無需幹預即可完成但所花時間超過預期時間的 I/O 請求(同樣,這通常是 IRP)。這種狀況的原因通常是硬體設定、韌體設定或篩選器驅動程式幹預,需要硬體或軟體供應商提供協助以便跟蹤和解決。
SQL Server 2000 SP4 包含資料庫和記錄檔 I/O(讀和寫)邏輯以便檢測延遲和阻塞狀況。當 I/O 操作經過 15 秒鐘或更長時間仍未完成時,SQL Server 會檢測到並報告這一狀況。以下訊息將被記錄到 SQL Server 錯誤記錄檔中:
2004-11-11 00:21:25.26 spid1 SQL Serverhas encountered 192 occurrence(s) of IO requests taking longer than 15 seconds to complete on file [E:\SEDATA\stressdb5.ndf] in database [stressdb] (7). The OS file handle is 0x00000000000074D4. The offset of the latest long IO is: x00000000022000". |
該訊息表明,當前工作負載需求超出了 I/O 路徑或當前系統配置和功能,或者 I/O 路徑含有不能正常工作的軟體(韌體、驅動程式)或硬體組件。
所記錄的錯誤資訊提供了以下資訊:
• ### occurrences — 未能在 15 秒鐘以內完成讀或寫操作的 I/O 請求的數量。
• File information — 完整的檔案名稱、資料庫名和受影響檔案的 DBID。
• File handle — 該檔案的作業系統控制代碼。可以通過調試器和其他工具 + 生產力來使用這一資訊跟蹤 IRP 請求。
• Offset — 上一個阻塞或延遲 I/O 的位移量。可以通過調試器和其他工具 + 生產力來使用這一資訊跟蹤 IRP 請求。(註:在記錄該訊息的時候,該 I/O 可能不再阻塞或延遲。)
| 【內容導航】 |
| 第1頁:檢測和解決 SQL Server2000 SP4中問題 |
第2頁:檢測和解決 SQL Server2000 SP4中問題 |
| 第3頁:檢測和解決 SQL Server2000 SP4中問題 |
第4頁:檢測和解決 SQL Server2000 SP4中問題 |