使用 A 的 PRB: 巢狀的迴圈聯結 」 書籤 LOOKUP...WITH 預先擷取 」 可能會發生鎖定較長的時間

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

徵狀

如果執行計劃使用 Nested 迴圈聯結和使用 WITH 預先擷取子句的書籤查閱鎖定會保留判斷合格的書籤的巢狀的迴圈聯結的持續期間。書籤用來擷取未處理的資料行的資料,且該資料會放在輸出緩衝區之後,然後就會釋放鎖定。這種行為可能會導致封鎖其他系統處理序識別碼 (spids)。

其他可行方案

如果您從雜湊或 MERGE LOOP 變更聯結提示,不會封鎖。

其他相關資訊

這種行為可以藉由使用下列範例所示:
SELECT c.mstr_acct, c.last_name_m, c.first_name, c.name_prefix, c.company_name
FROM tickler a 
 INNER LOOP JOIN member b    ON a.mbr_acct = b.mbr_acct 
 INNER LOOP JOIN person c    ON b.mstr_acct = c.mstr_acct 
WHERE a.tickler_code = 'SPIRITEXT' 
				
輸出的遵循前述查詢的 顯示計劃
StmtText                                                                                                                                            
---------------------------------------------------------------------------------------------------------------------------------------------
  |--Bookmark Lookup(BOOKMARK:([Bmk1002]), OBJECT:([TestLoopJoin].[dbo].[person] AS [c]) WITH PREFETCH)
       |--Nested Loops(Inner Join)
            |--Nested Loops(Inner Join)
            |    |--Index Seek(OBJECT:([TestLoopJoin].[dbo].[tickler].[tickler_code] AS [a]), SEEK:([a].[tickler_code]='SPIRITEXT') ORDERED)
            |    |--Clustered Index Seek(OBJECT:([TestLoopJoin].[dbo].[member].[pk_member] AS [b]), SEEK:([b].[mbr_acct]=[a].[mbr_acct])  ORDERED)
            |--Index Seek(OBJECT:([TestLoopJoin].[dbo].[person].[pk_person] AS [c]), SEEK:([c].[mstr_acct]=[b].[mstr_acct]) ORDERED)
				
輕易地啟動執行 UPDATE 的前幾個資料列從資料表中選取另一個連線來觀察到鎖定的行為。您將附註 [UPDATE 就會封鎖,直到 SELECT 陳述式的所有書籤尋查處理並傳送至用戶端的資料列。 書籤查閱

書籤查閱邏輯與實體運算子使用書籤 (資料列識別碼或叢集索引鍵) 查閱資料表或叢集的索引中對應的資料列。Argument 行包含用來查閱資料表或叢集的索引中列的書籤標籤。Argument 行也包含資料表或叢集的索引的資料列尊敬的名稱。如果在預先擷取 WITH 子句出現在 Argument 行,查詢處理器已經判斷它是最佳查閱資料表或叢集的索引中的書籤時,使用非同步 prefetching (先期讀取)。

屬性

文章編號: 260652 - 上次校閱: 2003年10月17日 - 版次: 3.2
這篇文章中的資訊適用於:
  • Microsoft SQL Server 7.0 Standard Edition
  • Microsoft SQL Server 2000 Standard Edition
關鍵字:?
kbmt kbpending kbprb KB260652 KbMtzh
機器翻譯
重要:本文是以 Microsoft 機器翻譯軟體翻譯而成,而非使用人工翻譯而成。Microsoft 同時提供使用者人工翻譯及機器翻譯兩個版本的文章,讓使用者可以依其使用語言使用知識庫中的所有文章。但是,機器翻譯的文章可能不盡完美。這些文章中也可能出現拼字、語意或文法上的錯誤,就像外國人在使用本國語言時可能發生的錯誤。Microsoft 不為內容的翻譯錯誤或客戶對該內容的使用所產生的任何錯誤或損害負責。Microsoft也同時將不斷地就機器翻譯軟體進行更新。
按一下這裡查看此文章的英文版本:260652
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