快照事务隔离级别:它真的像广告上说的那样有效吗?

4

您在高并发环境下使用它时遇到了什么问题吗?它是否真的像微软所说的那样有效?我正在使用SQL Server 2005,并希望听听那些在生产应用程序中使用它的人的经验。

对于我来说,快照隔离本身并不新鲜,因为我也开发/管理Firebird / Interbase - 在这里没有显式锁定,所有操作都在行版本控制中进行...


我们尚未在生产环境中使用它,但由于快照存储在tempdb中,您需要关注tempdb的使用情况--文件大小、I/O请求等。 - Paul Williams
1个回答

2
我们在几台服务器上使用快照隔离,其中包括高并发的账单系统副本(更新正在不断地复制),每秒有数十个查询从中选择。在启用快照隔离之前,长时间运行的选择查询经常会阻塞账单数据复制,到了某个时候单线程复制服务被阻塞,副本将过时一小时或更久。
启用快照隔离后,问题立即得到解决-选择语句查看数据的最新内部一致版本,并且复制可以在后台继续进行。权衡之处在于您选择的数据可能正在更新过程中,因此两个同时的选择语句可能返回不同的数据,但是为了增加容错性,这对我们来说是可以接受的。
你有什么特别的问题吗?还是只是想知道它的整体效果如何?

基本上,我想提议将我们的生产数据库设置为快照隔离级别,因为整体感觉是它存在很多争用,并且经常遭受阻塞和一些死锁的困扰。由于我已经知道在使用Firebird(其中所有内容都在记录版本控制下)开发了一些应用程序后的舒适程度 - 我只想知道MS的实现是否好。 - Fabricio Araujo
@Fabricio Araujo:我对他们的实现没有任何问题,但我承认我没有接触过其他人的行版本控制,因此我没有比较的基础。我知道我们在使用读取提交时遇到了严重的争用问题,启用快照隔离解决了这些问题,并且没有任何意外副作用的投诉。 - SqlRyan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接