時間:2024-02-13 10:23作者:下載吧人氣:18
在生產環境下,有時公司客服反映網頁半天打不到,除了在瀏覽器按F12的Network響應來排查,確定web服務器無故障后。就需要檢查數據庫是否有出現阻塞
當時數據庫的生產環境中主表數據量超過2000w,子表數據量超過1億,且更新和新增頻繁。再加上做了同步鏡像,很消耗資源。
這時就要新建一個會話,大概需要了解以下幾點:
查詢阻塞的方法有很多。有sql 2000 的sp_lock, 有sql 2005及以上的dmv
執行 exec sp_lock
下面列下關鍵字段
spid 是指進程ID,這個過濾掉了系統進程,只展示了用戶進程spid>50。
dbid 指當前實例下的哪個數據庫 , 使用DB_NAME() 函數來標識數據庫
type 請求鎖住的模式
mode 鎖的請求狀態
總結:當mode 不為GRANT狀態時, 需要了解當前鎖的模式,以及通過進程ID查找當前sql 語句
例如當前進程ID是416,且mode狀態為WAIT 時,查看方式 DBCC INPUTBUFFER(416)
用sp_lock查詢顯示的信息量很少,也很難看出誰被誰阻塞。所以當數據庫版本為2005及以上時不建議使用。
網友評論