行版本快照的读已提交机制,在做高并发业务系统时挺实用的。以前在 SQL Server 2005 之前,读写一冲突就卡住,想提高性能只能用脏读,多少有点不放心。后来版本支持从 Tempdb
拿快照,直接读已提交数据,查询不再被更新锁住,响应也快,数据也干净。
你要是做基于 SQL Server 的大型管理系统,建议早点把快照开了。尤其那种一个事务动不动几十行更新的业务,用快照能稳住用户体验,还省了不少锁相关的 bug。
文章里还列了事务没启用快照和启用后的差异,对照表蛮直观的。像 begin tran
和 select
之间行为的变化,看一眼你就明白为啥值得开启。
另外,这里还有几个相关链接挺有意思的,像事务提交、SQL Server 事务隔离级别这种,可以一起看看,对理解事务快照和隔离性更有。
如果你正在搭建 SOA 架构的系统,尤其是对事务一致性要求高的那种,真挺建议深入了解下这个方案。配合好业务逻辑,一边保证隔离性,一边还能不牺牲并发,还是蛮香的。