在 SQL Server 2000 和 SQL Server 2005 master.dbo.sysprocesses 資料表中的 < waittype 和 lastwaittype 資料行的描述

重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。

按一下這裡查看此文章的英文版本:822101
結論
在 Microsoft SQL Server 2000 和 SQL Server 2005 master.dbo.sysprocesses 資料表是包含使用中的伺服器處理序識別碼 (SPID),SQL 伺服器上執行的相關資訊的系統資料表。

如果您使用的 SQL Server 2005,也可以藉由使用 sys.sysprocesses 相容性檢視存取此資料表。

waittype 資料行]、 [lastwaittype 資料行]、 [waittime] 資料行] 和 [waitresource 資料行 master.dbo.sysprocesses 系統資料表中的提供處理序等候的資源的相關資訊。

本文列出可能 lastwaittype 值]、 [關聯的 waittype 的值] 與 [及其意義的簡短描述。
其他相關資訊
儲存在 主要 資料庫中的 SQL Server 執行個體 master.dbo.sysprocesses 系統表格包含下列協助監視處理序資源爭用案例和封鎖問題的系統管理員的資料行:
  • waittypewaittype 欄位是保留的內部二進位資料行。waittype] 欄位中的值表示連線正在等候的資源的類型。
  • lastwaittypelastwaittype 欄位是 waittype 欄位的字串表示。[lastwaittype] 欄位可指出最後 waittype 或目前 waittype 的 SPID。如果為某個 SPID waittype 資料行的值為 0x0000,SPID 不目前正在等待任何資源上。 在這種情況下 lastwaittype 欄,表示最後一個 SPID 遇到的 waittype。不過,針對某個 SPID waittype 資料行的值為非零,lastwaittype 資料行] 與 [SPID 的 [waittype] 資料行中值相等。這些值會指出目前等候狀態的 SPID。

    附註UMSTHREAD waittype 是此規則的例外狀況。請參閱 UMSTHREAD 取得其他詳細資料 」 其他 waittypes 」 一節中描述。
  • waittimewaittime 資料行提供代表 SPID 正在等候與目前 waittype 的毫秒數。
  • waitresource: waitresource 資料行提供需有關特定 SPID 正在等候的資源的詳細資訊。
本文中稍後的幾節將說明一些 waittypes SQL Server 所支援的而且,經常記錄 master.dbo.sysprocesses 系統資料表中。

LOCK waittypes

下表列出 LOCK waittypes master.dbo.sysprocesses 系統資料表在 SQL Server 2000 和 SQL Server 2005 中。
LastwaittypeWaittype描述
LCK_M_SCH_S0x01結構描述穩定性
LCK_M_SCH_M0x02結構描述修改
LCK_M_S0x03共用
LCK_M_U0x04更新
LCK_M_X0x05獨占
LCK_M_IS0x06意圖共用
LCK_M_IU0x07意圖更新
LCK_M_IX0x08意圖獨佔
LCK_M_SIU0x09共用意圖更新
LCK_M_SIX0x0a共用意圖獨占
LCK_M_UIX0x0b更新意圖獨佔
LCK_M_BU0x0c大量更新
LCK_M_RS_S0x0d範圍共用共用
LCK_M_RS_U0x0e範圍共用更新
LCK_M_RI_NL0x0F範圍插入 NULL
LCK_M_RI_S0x10範圍插入共用
LCK_M_RI_U0x11範圍插入更新
LCK_M_RI_X0x12範圍插入獨占
LCK_M_RX_S0x13範圍獨占共用
LCK_M_RX_U0x14範圍獨占更新
LCK_M_RX_X0x15範圍獨占獨占
如需有關支援 SQL Server 2000 和 SQL Server 2005 中的 [鎖定類型的詳細資訊,請參閱下列主題 SQL Server 線上叢書 》 中的]:
  • 瞭解 SQL Server 中鎖定
  • 鎖定相容性
此外,如果某個 SPID 正在等候鎖定 waittypes 且 waittime 資料行的記錄在 master.dbo.sysprocesses 系統資料表中相對應的值是極高,您必須為您的 SQL Server 的執行個體解決封鎖問題。

如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
224453瞭解並解決 SQL Server 7.0 或 2000年封鎖問題

閂鎖 waittypes

閂鎖是短期的輕量的同步處理物件。下列清單說明不同類型的閂鎖:
  • 無緩衝區 (非 BUF) 閂鎖: 的非緩衝區閂鎖提供同步處理服務至記憶體中資料結構,或提供敏感的並行程式碼行的 re-entrancy 保護。這些閂鎖可用各種不同的事物,但不用來同步處理緩衝區分頁的存取。
  • 緩衝區 BUF 閂鎖: 的緩衝閂鎖用來同步存取 BUF 結構和其關聯的資料庫頁面。典型的緩衝區栓需要序列化緩衝區頁面上的作業期間發生 (在頁面分割或在新的頁面例如配置時)。在交易期間,缺少這些閂鎖。這些是由 PAGELATCH waittypes 來表示 master.dbo.sysprocesses 資料表中。

    如需有關其中一個可能的原因 BUF 閂鎖爭用的按一下下面的文件編號,檢視 「 Microsoft 知識庫 」 中的發行項:
    328551tempdb 資料庫的 FIX: 並行增強功能
  • IO 閂鎖: [IO 閂鎖是子集 BUF 閂鎖緩衝區和相關聯的資料頁或索引頁位於一個 IO 的中間時所用的作業。PAGEIOLATCH waittypes 使用的磁碟記憶體傳輸,針對這些 waittypes 顯著 waittime 建議磁碟 I/O 子系統的問題。
下表列出不同的閂鎖 waittypes,您可能會注意到 SQL Server 2000 和 SQL Server 2005 中 master.dbo.sysprocesses 系統資料表中。
LastwaittypeWaittype描述
LATCH_NL0x400null 閂鎖
LATCH_KP0x401保留閂鎖
LATCH_SH0x402共用的閂鎖
LATCH_UP0x403更新閂鎖
LATCH_EX0x404獨占的閂鎖
LATCH_DT0x405摧毀閂鎖
PAGELATCH_NL0x410null 緩衝區頁面閂鎖
PAGELATCH_KP0x411保留緩衝區頁面閂鎖
PAGELATCH_SH0x412共用的緩衝區頁面閂鎖
PAGELATCH_UP0x413更新緩衝區頁面閂鎖
PAGELATCH_EX0x414獨占緩衝區頁面閂鎖
PAGELATCH_DT0x415摧毀緩衝區頁面閂鎖
PAGEIOLATCH_NL0x420null 緩衝區 I/O 頁面閂鎖
PAGEIOLATCH_KP0x421保留緩衝區 I/O 頁面閂鎖
PAGEIOLATCH_SH0x422共用的緩衝區 I/O 頁面閂鎖
PAGEIOLATCH_UP0x423更新緩衝區 I/O 頁面閂鎖
PAGEIOLATCH_EX0x424獨占緩衝區頁面 I/O 閂鎖
PAGEIOLATCH_DT0x425摧毀緩衝區 I/O 頁面閂鎖


啟動與 SQL Server 2000 SP4 的最常見未 Buf 閂鎖在 Latch_XX waitresource 欄閂鎖,會填入利用下表中的值。在 SQL Server 2000 SP4 之前發生沒有方法可以判定錯誤發生原因未 buf 閂鎖已沒有更多的侵入式診斷,例如一個 userdump 不予保留。應該使用 waittime 來檢視 waittype 或 waitresource。waittime 指定執行緒擁有等候多久 (以毫秒計)。
Waitresource描述疑難排解
FCB fgcb_alloc這些 Latch_XX 閂鎖是否統一或混合範圍,會保留當從一個檔案配置分頁。閂鎖也保留在例如成長和壓縮檔案、 重新命名或卸除一個檔案或新增或移除檔案 [配置] 作業期間。判斷任何的檔案是壓縮或成長。開始 SQL Server 2000 SP4 自動成長] 選項將會記錄在錯誤記錄檔如果花超過 30 秒。在理想的情況下,自動成長] 選項應該作為一個備份,因此您應該使用是小心謹慎為容量規劃以避免執行階段負面影響的成長檔案。您也可以變更百分之十預設自動成長值為固定的大小。我們不建議您在生產環境中使用自動壓縮。此檔案群組中的檔案可能也發出配置的許多要求。您可以新增更多檔案,該檔案群組中。
追蹤 TRACE_CONTROLLER TRACE_IO_SYNC 這些 Latch_XX 閂鎖會保留供程式碼剖析工具追蹤作業中同步處理之用。Sychronization 作業包括啟動、 停止、 設定追蹤的狀態,以及讀取器和寫入器同步處理。識別任何正在執行的程式碼剖析工具追蹤。 請試著避免同時執行一個以上的程式碼剖析工具追蹤。啟動程式碼剖析工具追蹤時則會將追蹤記錄在應用程式事件日誌中。此外,您可以在 SQL 查詢分析器中使用以下的查詢,檢視現用追蹤。
SELECT * FROM ::fn_trace_getinfo(NULL)
PARALLEL_PAGE_SUPPLIER這些 Latch_XX 閂鎖用於同步處理的平行查詢的網頁擷取。這個閂鎖表示查詢以平行方式執行,而且可能是一般。微調查詢,如果 waittime 資料行是大的值,查詢執行不良。
IDESIDES 閂鎖 waitresource 使用 PFS 分頁掃描來尋找可用空間及 PFS 分頁更新以反映配置和 deallocations 頁面時。當單一頁面配置到現有物件時,也可以使用這個閂鎖。判斷是否該物件上有叢集的索引。

其他 waittypes

下表列出您可能會注意到 SQL Server 2000 和 SQL Server 2005 中 master.dbo.sysprocesses 系統資料表中的其他 waittypes。
LastwaittypeWaittype描述
睡眠0x20這個 waittype 表示該 SPID 正在等候指定的時間是處理 lazywrites、 「 檢查點或伺服器端程式碼剖析工具追蹤事件的背景執行緒的一般狀態。
IO_COMPLETION0x21這個 waittype 指出代表 SPID 正在等候 I/O 要求來完成。當您發現這個 waittype sysprocesses 系統資料表中的 SPID 時,您必須使用效能監視器計數器]、 [程式碼剖析工具追蹤]、 [fn_virtualfilestats 系統資料表值函數,] 和 [顯示計劃選項來分析查詢計劃,對應到 [SPID 識別磁碟瓶頸。您可以減少這個 waittype 藉由新增額外的 I/O 頻寬或平衡 I/O 所有其他磁碟機。您也可以使用索引減少 I/O、 尋找錯誤的查詢計劃,並尋找記憶體壓力。
ASYNC_IO_COMPLETION0x22這個 waittype 指出代表 SPID 正在等候非同步 I/O 要求來完成。像 IO_COMPLETION waittype,此 waittype 也指出 I/O 瓶頸。在中可能會看到這個 waittype SPID 的 BACKUP]、 [建立資料庫]、 [ALTER 資料庫] 或 [資料庫自動成長等長時間執行-結 i/o 作業。這個 waittype 也可能表示磁碟瓶頸。
RESOURCE_SEMAPHORE0x40這個 waittype 表示該 SPID 正在等候資源上。這裡,SPID 通常等候取得記憶體,排序] 或 [查詢執行期間雜湊作業。這個 waittype 也可能表示該記憶體壓力存在於 [可見] 部分的緩衝集區中。
DTC0x41這個 waittype 表示該 SPID 正在等候 Microsoft 分散式交易協調器 (MS DTC) 服務。
OLEDB0x42這個 waittype 表示某個 SPID 完成了函式呼叫 OLE DB 提供者,且正在等候函式,以傳回所需的資料。這個 waittype 也可能表示該 SPID 正在等候遠端程序呼叫] 或 [連結的伺服器查詢],以傳回所需的資料。SPID 可能也會等待 BULK INSERT 命令或全文搜尋查詢傳回所需的資料。

OLEDB waittype 用來指示數個不同等候包括的狀態: 連結伺服器查詢,全文檢索搜尋查詢、 BULK INSERT 命令、 用戶端 Profiler 追蹤,就像 sysprocesses 資料表、 記錄讀取器和 DBCC CHECKDB 的虛擬資料表具體化。
RESOURCE_QUEUE0x44這是背景執行緒在 SQL Server 的一般 「 閒置 」 狀態。
ASYNC_DISKPOOL_LOCK0x45您可能會發現這個 waittype 在長時間執行-結 i/o 作業,例如建立、 展開,或卸除資料庫檔案。
UMSTHREAD0x46這個 waittype 表示批次已收到從用戶端應用程式,但沒有背景工作執行緒可用來服務要求。如果您持續看到 0x0046 waittypes 的多個 SPID 顯著的瓶頸其他位置中沒有使用所有可用的工作者執行緒的系統。請注意 waittime 資料行永遠是 0 為 UMSTHREAD waittype,且 lastwaittype 資料行錯誤可能會顯示不同 waittype UMSTHREAD 代替名稱。
WRITELOG0x81這個 waittype 指出代表 SPID 正在等候完成一個交易記錄檔 I/O 要求。這個 waittype 也可能表示可能磁碟瓶頸的問題。
PSS_CHILD
交換
CXPACKET
0x101
0x200
0x208
這些 waittypes 是所有參與執行平行查詢。這些 waittypes 代表 SPID 正在等候平行處理序能夠完成或開始。
PAGESUPP0x209這個 waittype 追蹤因為的中散佈平行掃描中的多個呼叫端的資料列所需的序列化所產生的等待時間。
資料指標0x20C這個 waittype 指示而使用非同步資料指標代表 SPID 正在參與執行緒同步處理。sp_configure ‘ cursorthreshold ’ 組態設定可能會判斷時資料指標以非同步的方式建立。
DBTABLE0x202這個 waittype 表示一個執行緒正在等候執行檢查點,且另一個執行緒已經是資料庫檢查點。
EC0x203這個 waittype 表示該 SPID 正在等候執行內容的存取。
TEMPOBJ0x204這個 waittype 表示該 SPID 正在等候卸除仍在使用一個暫存物件。
XACTLOCKINFO0x205這個 waittype 指出代表 SPID 正在等候其鎖定清單上執行維護作業。
LOGMGR0x206這個 waittype SPID 會試著關閉資料庫時,會使用,並等待擱置的交易記錄檔 I/O 要求,才能完成。
CMEMTHREAD0x207這個 waittype 表示該 SPID 正在等候安全執行緒的記憶體物件的存取權。序列化可以確保雖然使用者配置或釋放記憶體從記憶體中的任何其他嘗試執行相同工作的 SPID 物件必須等到,並 CMEMTHREAD waittype 設定 SPID 正在等候時。

您可能會注意到這個 waittype 在許多案例中。不過,當臨機操作查詢計劃正快速插入程序快取從許多不同的連線至 SQL Server 執行個體時,便會最常記錄這個 waittype。您可以藉由限制,必須插入或從程序快取區中移除資料,例如明確地參數化查詢,以便可以重複使用查詢或使用預存程序在適當的地方來解決這個瓶頸。
關機0x20A這個 waittype 指示該 SPID 所發行的關機命令而 SPID 正在等候作用中的查詢,以完成。
WAITFOR0x20B這個 waittype 表示該 SPID 正在睡眠因為一個 WAITFOR 延遲 Transact-SQL 陳述式。
NETWORKIO0x800這個 waittype 表示該 SPID 正在等候用戶端應用程式來擷取資料之前 SPID 可以將更多的結果傳送至用戶端應用程式。
参考
如需詳細資訊,請按一下下列的文件編號,檢視 「 Microsoft 知識庫 」 中的文件:
244455SQL Server 7.0 sysprocesses waittype 和 lastwaittype 欄位的定義
取得更多資訊有關 master.dbo.sysprocesses 系統資料表,SQL Server 2000 中請造訪下列 Microsoft 網站]:如需有關在 SQL Server 2000 閂鎖的詳細資訊,請造訪下列 Microsoft 網站]:

警告:本文為自動翻譯

內容

文章識別碼:822101 - 最後檢閱時間:05/17/2007 03:50:48 - 修訂: 8.4

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbsystemdata kbfield kbdatabase kbinfo KB822101 KbMtzh
意見反應