【问题标题】:Snapshot transaction Isolation levels: it really works as advertised?快照事务隔离级别:它真的像宣传的那样有效吗?
【发布时间】:2010-03-02 17:06:32
【问题描述】:

在高并发环境下使用有什么问题吗?真的像MS宣传的那样有效吗?我正在使用 SQL Server 2005,想听听那些在应用程序中使用它的人的经验。

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

【问题讨论】:

  • 我们没有在生产中使用它,但由于快照存储在 tempdb 中,您需要密切关注 tempdb 的使用情况——文件大小、I/O 请求等。

标签: sql-server sql-server-2005 transactions snapshot-isolation


【解决方案1】:

我们在几台服务器上使用快照隔离,包括我们计费系统的高争用副本(不断复制更新),每秒有几十个查询从中选择。在我们开启快照隔离之前,长时间运行的选择查询会经常阻塞计费数据复制,以至于由于单线程复制服务被阻塞,副本有时会过期一个小时或更长时间。

在我们启用快照隔离后,问题立即自行解决 - Select 语句查看数据的最新内部一致版本,并且可以在后台继续复制。权衡是您选择的数据可能正在更新,因此两个同时的 Select 语句可能会返回不同的数据,但作为对争用的更高容忍度的交换,这对我们来说很好。

您是否有任何特别的问题,或者只是总体感觉它的效果如何?

【讨论】:

  • 基本上是整体感觉,因为我想建议让我们的生产数据库处于快照隔离状态。它有很多争用,并遭受频繁的阻塞和一些死锁。因为我已经知道在使用 Firebird 开发了一些应用程序之后它是多么的舒服(所有东西都在记录版本控制之下)——我只想知道 MS 的实现是否良好。
  • @Fabricio Araujo:我对他们的实现没有任何问题,那是我承认我没有接触过任何其他人的行版本控制,所以我没有比较的基础。我知道我们在使用 read-committed 时遇到了严重的争用问题,启用快照隔离缓解了这些问题,没有抱怨任何类型的意外副作用。
猜你喜欢
  • 1970-01-01
  • 2017-08-23
  • 2011-02-14
  • 1970-01-01
  • 2013-10-13
  • 2011-09-30
  • 1970-01-01
  • 1970-01-01
  • 2010-11-10
相关资源
最近更新 更多