什么时候开启行版本?
当发现系统中存在大量读写阻塞的时候,就是我们开启行版本的时候了。要点:写写阻塞的场景行版本技术解决不了
开启方式:
-- 设置为单用户
ALTER DATABASE MyTest SET SINGLE_USER WITH ROLLBACK IMMEDIATE;
GO
-- 开启行版本(事务级)
ALTER DATABASE MyTest SET ALLOW_SNAPSHOT_ISOLATION ON;
GO
-- 开启语句级行版本
ALTER DATABASE MyTest SET READ_COMMITTED_SNAPSHOT ON WITH no_wait
GO
-- 设置为多用户
ALTER DATABASE MyTest SET MULTI_USER WITH ROLLBACK IMMEDIATE;
GO
开启语句级行版本注意点:
如果将 READ_COMMITTED_SNAPSHOT 设置为 ON,则数据库引擎会使用行版本控制为每个语句提供一个在事务上一致的数据快照,缺点是用户读到的虽然不是一个脏数据,但是可能是个正在被修改马上就要过期的数据值。如果根据这个过期的值做数据修改,会产生逻辑错误。