SQLServer DML操作阻塞SELECT查詢

chenoracle發表於2019-10-13

SQLServer DML 操作阻塞 SELECT 查詢


問題: 新上的BI 系統,同事反饋在 ETL 抽數期間,檢視報表看板會卡住 2-3 分鐘。

問題原因: ETL 抽數期間檢查 BI 資料庫,發現有幾個正在執行 Select 操作的會話被阻塞了。

解決方案: 檢查資料庫的快照隔離級別是 read committed 讀已經提交的事務之後的資料,如果一個事務沒有提交,則當前事務將被阻塞。斷開此資料庫上所有連線,將快照隔離級別改成 read committed snapshot select 將不會被阻塞,而是透過row versioning 獲得舊的資料。

相關查詢如下:

---1 檢視資料庫快照隔離級別

use   testdb

DBCC   USEROPTIONS ;

     Set Option    Value

......

13   isolation level read committed

---2 修改快照隔離級別為 read committed snapshot

(1)  斷開 testdb 上所有連線,並透過 sp_who2 檢查,根據實際情況時 kill 斷開相關的連線;

(2)  執行如下語句,啟動 read committed snapshot

ALTER   DATABASE   testdb SET   READ_COMMITTED_SNAPSHOT   ON ;

檢視快照隔離級別

use   testdb

DBCC   USEROPTIONS ;

     Set Option    Value

......

13   isolation level read committed snapshot

修改後,ETL 抽數期間,檢視報表看板時間由 2-3 分鐘縮短到 5 秒;

歡迎關注我的微信公眾號"IT小Chen",共同學習,共同成長!!!

SQLServer DML操作阻塞SELECT查詢

SQLServer DML操作阻塞SELECT查詢



來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2659819/,如需轉載,請註明出處,否則將追究法律責任。

相關文章