2010-09-20 32 views
0

我正在嘗試調查客戶端網站的性能問題。我瀏覽了網站的封鎖數據,並在一段時間內提出了幾個SPID進行調查。然後,我查看了sys.syslockinfo中的數據,發現其中一個問題SPID在Intent Exclusive Table鎖上有WAIT。我試圖找到阻塞的SPID,但在WAIT之前的一段似乎合理的時間段內找不到任何GRANT鎖。沒有相應GRANT的等待鎖

是否有任何理由,它可能不得不等待,即使沒有其他會話表被鎖定? sys.syslockinfo中的任何已知錯誤?

我必須檢查鎖定信息的抓取方式 - 它可能是每15秒鐘一次的事情,在這種情況下,GRANT可能沒有被捕獲。同時,如果有人知道另一個潛在的原因,我會非常感謝您的洞察力。

謝謝!

回答

1

當你說沒有相應的GRANT時,你到底在看什麼?資源上的IX會與在同一資源上獲得的任何S,U或X鎖衝突。所以如果有人在桌子上有一個S鎖,它會和IX產生衝突。一個典型的例子是嘗試更新數據並請求表上的IX鎖來啓動鎖層次結構(IX表 - > IX頁 - > X鍵)的請求,並與執行鎖升級並獲得完整的S鎖定在桌子上。

當一個請求被阻塞在等待這個IX鎖,看看sys.dm_exec_requestsblocking_session_id,然後檢查鎖是由會議sys.dm_tran_locks舉行什麼。

+0

我在查看包含sys.syslockinfo快照的日誌表。我希望在任何時候,如果在資源上有一個WAIT類型的行,那裏還應該有另一個(至少一個)行,並且引起第一個會話的會話具有GRANT類型必須等待。說實話,我不知道情況是否如此。這就是我認爲世界應該如何工作的原因:) – 2010-09-20 19:04:49

+0

大多數DMV不能提供連貫的快照,因爲他們從不「凍結」系統來轉儲信息。總是有可能看到沒有相應的GRANT的WAIT(即在等待信息行產生的時候GRANT在那裏,但在DMV達到它在輸出中的'位置'時已經消失了)。但這應該是例外,而不是規則。如果你始終看到這一點,我的第一個懷疑就會轉向審查員的眼睛,因爲在衝突的格蘭特在那裏,但錯過了。你能共享一個採樣的syslockinfo顯示異常嗎? – 2010-09-20 19:15:32