在 SQL Server 2000 SP4 中和更新版本中的診斷協助偵測停止並停留 I/O 作業

文章翻譯 文章翻譯
文章編號: 897284 - 檢視此文章適用的產品。
全部展開 | 全部摺疊

在此頁中

結論

資料庫管理系統 (DBMS) 如 SQL Server 依賴時刻表的檔案輸入和輸出 (I/O) 作業。 任何一種下列項目可能會建立停留或停止 I/O 問題。這些問題可以快速地有不利的影響 SQL Server 回應速度和效能上:
  • 有瑕疵的硬體
  • 設定不正確的硬體
  • 軔體設定
  • 篩選器驅動程式
  • 壓縮
  • 錯誤
  • I/O 路徑中的其他條件
這些 I/O 問題可能會導致發生下列行為:
  • 封鎖
  • 閂鎖爭用和逾時
  • 緩慢的回應時間
  • 自動縮放的資源界限
Microsoft SQL Server 2000 服務套件 4 (SP4) 從開始 SQL Server 會包含可協助偵測延遲和卡住資料庫 I/O 讀取和寫入和記錄檔案 I/O 讀取和寫入的條件的邏輯。當 I/O 作業已經暫止,15 秒或再時,SQL Server 會執行下列步驟:
  1. 偵測到作業已被擱置。
  2. 資訊訊息寫入 SQL Server 錯誤記錄檔。訊息的文字會類似下列:

    2004-11-11 00:21:25.26 spid1 SQL Server 遇到 192 occurrence(s) 的 IO 要求採取長於 15 秒鐘來完成檔案 [E:\SEDATA\stressdb5.ndf] 上 [stressdb] (7) 的資料庫中。 OS 檔案控制代碼是 0x00000000000074D4。 最新的長 IO 位移是: 0x00000000022000 」。

資訊訊息的說明

摺疊此表格展開此表格
訊息文字描述
Number occurrence(s)讀取或寫入作業在 15 秒內未完成的 I/O 要求數目。
檔案資訊完整檔案名稱、 資料庫的名稱及資料庫識別碼 (DBID)。
控制代碼檔案的作業系統控制代碼。可以使用作業系統控點與偵錯工具或其他公用程式,來幫助追蹤 I/O 要求封包 (IRP) 要求。
位移最後一個位移卡住 I/O 作業或最後一個停止 I/O 作業。可以使用位移與偵錯工具或以其他公用程式,來幫助追蹤 IRP 要求。

附註當資訊性訊息寫入 SQL Server 錯誤記錄檔時,I/O 作業可能不再被卡住或停止。
此資訊訊息表示目前負載可能會遭遇發生下列情況之一:
  • 工作負載超過 I/O 路徑功能。
  • 工作負載超過目前系統功能。
  • I/O 路徑都具有功能有問題的軟體 ; 也許韌體或驅動程式問題。
  • I/O 路徑有故障的硬體元件。
如需有關 SQL Server 2000 I/O 模式的詳細資訊,請造訪下列 Microsoft 網站]:
http://technet.microsoft.com/en-us/library/cc966500.aspx

其他相關資訊

停留的 I/O 與停止的 I/O

停留的 I/O

停留的 I/O 被定義為未完成的 I/O 要求。 經常,停留的 I/O 是停留的 IRP。若要解決停留的 I/O 條件,您通常必須重新啟動電腦或執行類似的動作。停留的 I/O 狀況通常會指示下列其中:
  • 有瑕疵的硬體。
  • I/O 路徑元件中有錯誤。

停止的 I/O

停止的 I/O 被定義為不會完成的 I/O 要求。不過,I/O 作業需要過多的時間來完成。停止的 I/O 行為通常是由於下列原因所造成:
  • 硬體組態。
  • 韌體設定。
  • 篩選器驅動程式問題,需要的硬體或軟體廠商的協助追蹤,並解決。

SQL Server 停止 I/O 與卡住 I/O 錄製和報告

Microsoft SQL Server 支援處理許多情況下每年涉及停留或停止 I/O 問題。 稍後所述,這些 I/O 問題出現在不同的方式。I/O 問題是一些最困難的問題診斷和偵錯。I/O 問題需要大量的時間和資源偵錯從 Microsoft 及客戶。報告的功能已經加入至 SQL Server 2000 SP4 和更新版本中可大幅減少所需來識別 I/O 問題的時間。

報告] 及 [I/O 要求錄音的設計是每個檔案為基礎。偵測和報告停止並停留 I/O 要求是兩個不同的動作。

錄製

有兩個位置,在 SQL Server 中記錄的動作會發生的地方。在哪些錄音中的第一個位置,就會發生,是實際完成 I/O 作業。 如果 I/O 要求需要超過 15 秒鐘才能完成,就會發生在記錄作業。 延遲寫入器執行時,就會發生哪些錄音中的第二個位置,為。當執行延遲寫入器時,延遲寫入器會檢查所有擱置中的資料,而且所有擱置中的記錄檔檔案 I/O 要求。如果超過 15 秒臨界值是資料錄的作業就會發生。

報告

報告發生在分開的是 5 分鐘或更多的時間間隔。報告發生於在檔案上進行下一個 I/O 要求。 如果一個記錄動作發生,而且 5 分鐘或更多有自從上次報告發生,資訊摘要 > 一節所描述的訊息寫入 SQL Server 錯誤記錄檔。

15 秒臨界值不是可調整的。不過,您可以使用追蹤旗標 830 停用停止與停留 I/O 偵測,但我們不建議您這樣。

當 SQL Server 啟動時,即停用偵測,使用-T830 啟動參數。使用啟動參數將會停用偵測每次啟動 SQL Server-T830。若要停用目前正在執行的 SQL Server 執行個體的偵測,使用下列的陳述式:

dbcc traceoff 830 (-1)

此設定才有效的 SQL Server 處理序的生命週期。

附註I/O 要求,會變成延遲或卡住只報告一次。如果訊息報告 10 個 I/O 要求的延遲,那些 10 報告將不會發生一次。如果下一個訊息報告 15 I/O 要求的延遲,就表示有成為延遲 15 新的 I/O 要求。

追蹤 I/O 要求封包 (IRP)

讀取和寫入資料,SQL Server 會使用標準的 Microsoft Windows API 呼叫。比方說 SQL Server 會使用下列功能:
  • WriteFile
  • ReadFile
  • WriteFileScatter
  • ReadFileGather
讀取或寫入要求是由 Windows 當做處理 I/O 要求封包 (IRP)。 若要決定 [IRP 狀態,使用下列兩個動作:
  • Microsoft 平台支援協助。
  • 核心偵錯工具。
IRP IRP 的相關資訊追蹤,請造訪下列 Microsoft 網站並搜尋關鍵字 IRP 」:
http://support.microsoft.com
附註 核心偵錯可能很具侵入性的程序,因為核心偵錯可以要求您停止系統在完成偵錯動作。 我們建議您查看是否有任何更新適用於下列項目:
  • BIOS
  • 韌體
  • 其他的 I/O 路徑元件
在執行偵錯的其他動作之前,請連絡硬體廠商。 協力廠商驅動程式、 韌體或篩選器驅動程式元件,可能會牽涉到偵錯工作階段。

系統效能與查詢計劃動作

整體系統效能可以 I/O 處理中扮演關鍵角色。當您調查停止或停留 I/O 作業的報表時,應該請系統的一般健全狀況考量。過多負載可以導致整體的系統很慢。這包括 I/O 處理。問題發生時系統的行為可以則在判斷造成問題的根本原因的關鍵因素。比方說是否 CPU 使用率變高或問題發生時,保持高 CPU 使用率,這種行為可能表示系統上的程序正在使用這麼多的 CPU 其他處理程序會被造成不利影響。

效能計數器

若要監視的 I/O 效能,檢查下列效能計數器的特定的 I/O 路徑資訊:
  • 平均磁碟秒傳輸
  • 平均磁碟佇列長度
  • 目前磁碟佇列長度
比方說平均磁碟秒/傳輸時間執行 SQL Server 的電腦上通常是少於 15 毫秒為單位)。 如果平均磁碟秒/傳輸值 climbs,這表示 I/O 子系統不最佳狀態追蹤以 I/O 要求。

小心與效能計數器,因為 SQL Server 會完整善用大量發送磁碟佇列長度的非同步 I/O 功能。因此,較長磁碟的佇列長度單獨不會指出問題。

Windows 系統監視器中,您可以檢閱計數器 」 實體磁碟: 磁碟位元組/秒 」 每個受影響的磁碟和比較計數器的活動的速率 」 處理程序: IO 資料位元組數/秒 」 及 「 處理程序: IO 其他的位元組/秒 」 每個處理程序來識別是否一組特定的處理程序會產生過多的 I/O 要求。有各種其他 I/O 相關的 [處理中可用的計數器物件,可顯示更細微的資訊。如果您判斷 SQL Server 執行個體是負責在伺服器上的過多 IO 負載,檢視上的 「 索引和平行處理原則 」 的下一節。偵測和解決 I/O 瓶頸詳細探討,檢閱 [MSDN 白皮書 Troubleshooting Performance Problems in SQL Server 2008 中的 「 I/O 瓶頸 」 一節或 Troubleshooting Performance Problems in SQL Server 2005]。

索引和平行處理原則

經常,高速量 I/O 的發生是因為索引是遺失。這種行為可以大量發送 I/O 路徑。傳遞具有該索引開啟精靈 (ITW) 可能有助於解決系統上的 I/O 壓力。如果查詢受惠於索引而不是從資料表掃描或或許甚至使用排序或雜湊,系統可以取得下列優點:
  • 降低其直接完成動作的實體 I/O 相當於查詢的效能效益。
  • 資料快取中的較少網頁可以開啟。因此,資料快取中那些網頁保持作用中查詢的相關。
  • 因為索引可能已遺失,或因為統計資料已經過期,會使用排序和雜湊。您可能會減少 tempdb 使用以及爭用,藉由新增一或多個索引。
  • 減少資源、 平行作業的降低或兩者。 因為 SQL Server 並不保證平行查詢執行,而因為視為系統的負荷是最佳化序列執行的所有查詢的最佳方法。 最佳化查詢、 開啟 [查詢分析器,並將 sp_configure 值最大平行度] 選項設定為 1。如果要迅速成為序列的作業執行微調所有查詢,平行執行往往是只是較佳的結果。 不過,許多平行執行時間會選取因為只是大的資料量。 遺漏索引的大型排序可能會發生。 執行排序作業的多個工作人員會建立更快速的回應。 不過,這個動作可以大幅增加系統上的壓力。 從許多工作者的大型讀取的要求會造成從多個工作者一起增加 CPU 使用率的 I/O 尖峰處理。 可調整多次查詢,執行地更快,並使用較少的資源,如果加入索引時,或發生其他的微調動作。

從 Microsoft SQL Server 支援的實用範例

下列範例有由 Microsoft SQL Server 支援及平台擴大支援被處理。 這些範例被為了提供參照框架,並說明集您期望約停止和卡住 I/O 情況和有關系統可能會受到影響或可能的方式回應。 沒有特定的硬體或驅動程式會造成任何特定風險或增加的風險透過另一個集合。所有系統都都在這方面是相同的。

範例 1: A 記錄檔寫入卡住 45 秒鐘,

SQL Server 記錄檔案寫入嘗試定期變得卡住約 45 秒。 記錄檔寫入未及時完成。建立領導 30 秒用戶端逾時的封鎖條件這種行為。

應用程式送出到 SQL Server 認可並認可變得為擱置中的記錄檔寫入卡住。這種行為會造成查詢繼續持有鎖定,並封鎖來自其他用戶端的連入要求。 然後,其他用戶端啟動逾時時間。這而且問題,因為應用程式不是設計來復原開啟的交易時發生查詢逾時。 這會建立數百個開啟的交易已持有鎖定。因此,嚴重的封鎖情況發生。

如更多有關交易處理及封鎖,按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
224453瞭解並解決 SQL Server 7.0 或 2000年封鎖問題
應用程式服務使用連接共用的網站。為更多連線變得封鎖的網站就會建立更多連線。這些連線變得封鎖並週期繼續。

大約 45 秒之後記錄檔寫入完成。但是,依此時間數百個的連線已備份。封鎖問題導致幾分鐘的復原時間,SQL Server,以及應用程式。結合應用程式的問題時停止的 I/O 條件會有非常負面的影響系統上。
解決方案
問題已追蹤到主機匯流排介面卡 (HBA) 驅動程式中停留的 I/O 要求。 電腦必須具有容錯移轉支援多個 HBA 卡。 當一個 HBA 已背後,或已不通訊與存放區域網路 (SAN) 時,"重試之前容錯移轉 」 逾時值已設定為 45 秒。 時超過逾時,所以 I/O 要求被路由到第二個 HBA。第二個 HBA 處理該要求,並快速地完成。為了防止這類停車格條件,硬體製造商所建議"重試之前容錯移轉 」 設定值為 5 秒。

範例 2: 篩選器驅動程式介入

許多防毒軟體程式及備份產品使用 I/O 篩選器驅動程式。 這些 I/O 篩選器驅動程式成為 I/O 要求堆疊中的一部份,它們擁有 IRP 要求的存取。 從建立 Bug 的各種問題卡住 I/O 條件或停止中篩選器驅動程式實作的 I/O 條件,已經看過 Microsoft 產品支援服務。

一個這類條件已備份處理允許備份備份發生時,原先開啟的檔案篩選器驅動程式。系統管理員必須包含 SQL Server 資料檔目錄在檔案的備份選項。 備份發生備份會嘗試在備份開始的時間收集檔案的正確的影像。 如此一來延遲 I/O 要求。I/O 要求所允許只完成一次一個,因為它們已處理由軟體。

當啟動備份時,因為 [I/O SQL Server 被迫完成一次一個,而大幅捨棄 SQL Server 效能。 複合問題,"一次一個 「 邏輯是使得 I/O 作業不能以非同步方式執行。因此,SQL Server 預期張貼 I/O 要求,並繼續時, 在背景工作陷入讀取或寫入呼叫直到 I/O 要求完成為止。 處理工作例如 SQL Server 預先讀取已有效地根據停用篩選器驅動程式的動作。此外,篩選器驅動程式中的另一個 Bug 處於 」 一次一個"動作程序,備份完成時,即使。 還原 SQL Server 效能唯一的方法是關閉,然後重新開啟資料庫] 或 [,讓檔案控制代碼已釋放和重新取得沒有篩選器驅動程式互動的情況下,重新啟動 SQL Server。
解決方案
如果要解決這個問題,SQL Server 資料檔案已移除檔案的備份程序。軟體製造留"一次 」 模式中的檔案的問題也更正。

範例 3: 隱藏錯誤

許多較高的結束系統有多頻道的 I/O 路徑來處理負載平衡或類似的活動。 Microsoft 產品支援已經找到負載平衡的軟體 I/O 要求失敗,但軟體未正確處理錯誤狀況的問題。軟體可以試著無限的重試次數。 I/O 作業就會變成卡住和 SQL Server 無法完成指定的動作。 更像記錄檔寫入已稍早所述的條件,這類條件 wedges 系統之後,就可能會發生許多不佳的系統行為。
解決方案
如果要解決這個問題,重新啟動 SQL Server 通常需要。不過,有時您必須重新啟動作業系統以還原處理。我們也建議您從 I/O 廠商取得軟體更新。

範例 4: 遠端儲存體、 左右反轉和 Raid 磁碟機

許多系統使用鏡像,或採用類似的步驟,以避免資料遺失。 有些使用鏡像的系統是基礎的軟體,有些是基礎的硬體。 通常這些系統的產品支援服務所發現的情況是增加延遲時間。

當 [I/O I/O 視為完成之前必須完成到鏡像時,就會發生整體的 I/O 時間的增加。針對遠端鏡像安裝可以成為涉及網路重試次數。當磁碟機失敗發生重建 RAID 系統 I/O 模式可以也被中斷。
解決方案
嚴格的組態設定都需要降低延遲至鏡像或 RAID 重建作業。

範例 5: 壓縮

Microsoft 不支援,Microsoft SQL Server 7.0 或 Microsoft SQL Server 2000 資料檔上和記錄檔的壓縮磁碟機。 NTFS 壓縮不安全的 SQL Server,因為 NTFS 壓縮中斷寫入目標記錄 (WAL) 通訊協定。 NTFS 壓縮也需要增加的處理每一個 I/O 作業。 壓縮會建立"一次一個 」 類似,會導致嚴重的效能問題發生的行為。
解決方案
如果要解決這個問題,解壓縮資料和記錄檔。

其他資料點

sysprocesses 系統表格中所提供的等候型別資訊很有幫助診斷 I/O 瓶頸。 緩衝區 I/O 閂鎖等候型別和 writelog 等待是索引鍵的標記,以在調查路徑的 I/O 效能。

如等待類型的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
822101在 SQL Server 2000 和 SQL Server 2005 master.dbo.sysprocesses 資料表中的 < waittype 和 lastwaittype 資料行的描述

?考

231619如何使用 「 SQLIOStress 」 公用程式,如 SQL Server 的磁碟子系統的壓力
826433加入至偵測未回報的 I/O 問題的其他 SQL Server 診斷
230785SQL Server 7.0、 SQL Server 2000 和 SQL Server 2005 記錄和資料儲存體演算法擴充資料可靠性
SQL Server 會要求系統,以支援 ‘ 保證傳遞穩定媒體 ’ Microsoft SQL Server Always-On 存放裝置方案檢閱程式] 下所述。 Fo如 SQL Server 資料庫引擎的輸入與輸出需求的更多有關,按一下 [下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項]:
967576Microsoft SQL Server 資料庫引擎的輸入/輸出需求

屬性

文章編號: 897284 - 上次校閱: 2009年8月5日 - 版次: 3.0
這篇文章中的資訊適用於:
  • Microsoft SQL Server 2000 Service Pack 4
  • Microsoft SQL Server 2005 Workgroup Edition
  • Microsoft SQL Server 2005 Standard Edition
  • Microsoft SQL Server 2005 Developer Edition
  • Microsoft SQL Server 2005 Enterprise Edition
  • Microsoft SQL Server 2008 Developer
  • Microsoft SQL Server 2008 Enterprise
  • Microsoft SQL Server 2008 Express
  • Microsoft SQL Server 2008 Standard
關鍵字:?
kbmt kbinfo kbtshoot kbsqlserv2000sp4fea KB897284 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:897284
Microsoft及(或)其供應商不就任何在本伺服器上發表的文字資料及其相關圖表資訊的恰當性作任何承諾。所有文字資料及其相關圖表均以「現狀」供應,不負任何擔保責任。Microsoft及(或)其供應商謹此聲明,不負任何對與此資訊有關之擔保責任,包括關於適售性、適用於某一特定用途、權利或不侵權的明示或默示擔保責任。Microsoft及(或)其供應商無論如何不對因或與使用本伺服器上資訊或與資訊的實行有關而引起的契約、過失或其他侵權行為之訴訟中的特別的、間接的、衍生性的損害或任何因使用而喪失所導致的之損害、資料或利潤負任何責任。

提供意見

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com