SQLServer DML操作阻塞SELECT查詢
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",共同學習,共同成長!!!
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/29785807/viewspace-2659819/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 【sqlserver】查詢阻塞儲存過程sp_who_lockSQLServer儲存過程
- 如何查詢DML操作的詳細記錄
- oracle dbms_sql執行查詢select_dml_ddl(一)OracleSQL
- 表中出現碎片,造成查詢、DML操作變慢
- 用user_tab_modifications查詢表dml操作時間
- oracle session阻塞查詢OracleSession
- 查詢阻塞與被阻塞SQL語句SQL
- select查詢之三:子查詢
- select查詢之一:普通查詢
- select子查詢
- Oracle DML(非select) 操作不commit 對select的影響OracleMIT
- Oracle阻塞會話查詢Oracle會話
- MySQL查詢阻塞語句MySql
- Oracle阻塞(鎖等待)查詢Oracle
- 查詢SQLSERVER版本號SQLServer
- SqlServer遞迴查詢SQLServer遞迴
- 外來鍵沒有索引哪些DML操作會被阻塞索引
- select查詢之四:連線查詢
- 淺談DML阻塞(上)
- 淺談DML阻塞(下)
- mysqPoint型別查詢和插入操作:insert和select型別
- SQL Server阻塞查詢語句SQLServer
- sqlserver查詢table,columns資訊SQLServer
- 【sqlserver】查詢 表的大小SQLServer
- sqlserver表結構查詢SQLServer
- sqlserver查詢時不加鎖SQLServer
- Oracle中查詢阻塞與被阻塞SID的方法Oracle
- sql查詢更新update selectSQL
- Select from subquery 子查詢
- row lock contention 阻塞程式查詢
- library cache lock 阻塞程式查詢
- library cache pin 阻塞程式查詢
- SQLSERVER跨伺服器查詢SQLServer伺服器
- SQLSERVER SELECT(zt)SQLServer
- RAC環境中的阻塞 查詢鎖
- SQLServer查詢所有資料庫大小SQLServer資料庫
- sqlserver查詢長括號[資料SQLServer
- sqlserver查詢最接近的記錄SQLServer