快照隔离功能帮助我们解决了读者在大容量网站上锁定作者的问题。它通过在 SqlServer 中使用 tempdb 对行进行版本控制来实现。
我的问题是正确实现此快照隔离功能,是否只是在我的 SqlServer 上执行以下操作
ALTER DATABASE MyDatabase
SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON
我是否还必须编写包含 TransactionScope 的代码,例如
using (new TransactionScope(TransactionScopeOption.Required,
new TransactionOptions { IsolationLevel = IsolationLevel.SnapShot}))
最后,Brent 在这篇文章的“并发的隐藏成本”一节中指出了他的担忧,他在其中提到当您在 tempdb 中对行进行版本化时,tempdb 可能会用完空间,并且可能会出现性能问题,因为它必须查找版本化的行。所以我的问题是我知道这个网站使用快照隔离,其他人在大型网站上使用这个功能,你对性能有什么看法?
谢谢,雷。