SQL Server開啟READ_COMMITTED_SNAPSHOT


設置數據庫為SINGLE_USER模式,減少鎖定時間

ALTER DATABASE dbname SET SINGLE_USER WITH ROLLBACK IMMEDIATE
ALTER DATABASE dbname SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE dbname SET READ_COMMITTED_SNAPSHOT ON
ALTER DATABASE dbname SET MULTI_USER
 

當數據庫處於read committed隔離級別時,與Oracle數據庫中的效果相同,這時,update操作的舊數據會保存在tempdb中稱為version store的部分,在Oracle數據庫,這些舊數據會保存在undo表空間。只要事務不提交,其他連接可以看到update之前的舊數據。下面查詢中的version_store_reserved_page_count字段可以得到tempdb中version store所占的空間大小:

select * from sys.dm_db_file_space_usage

 

--查看數據庫的事務隔離相關參數
select name,
       user_access,
       user_access_desc,
       snapshot_isolation_state,
	   snapshot_isolation_state_desc,
       is_read_committed_snapshot_on
from sys.databases

--ALTER READ_COMMITTED_SNAPSHOT
ALTER DATABASE MES_WORKBECH_TD SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE MES_WORKBECH_TD SET ALLOW_SNAPSHOT_ISOLATION ON;
ALTER DATABASE MES_WORKBECH_TD SET READ_COMMITTED_SNAPSHOT ON;
ALTER DATABASE MES_WORKBECH_TD SET MULTI_USER;


alter database MES_WORKBECH_LOG SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
alter database MES_WORKBECH_LOG SET ALLOW_SNAPSHOT_ISOLATION ON
alter database MES_WORKBECH_LOG SET READ_COMMITTED_SNAPSHOT ON;
alter database MES_WORKBECH_LOG SET MULTI_USER

ALTER DATABASE MES_WORKBECH_LOG SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
ALTER DATABASE MES_WORKBECH_LOG SET ALLOW_SNAPSHOT_ISOLATION OFF
ALTER DATABASE MES_WORKBECH_LOG SET READ_COMMITTED_SNAPSHOT OFF;
ALTER DATABASE MES_WORKBECH_LOG SET MULTI_USER;

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM