【问题标题】:Correct Isolation Level for Frequently Called Update SP?经常调用的更新 SP 的正确隔离级别?
【发布时间】:2012-03-09 07:39:21
【问题描述】:

假设我有一个跟踪股票价格的表(这个问题的一个简单相关的例子)。我跟踪了 1000 个代码,并且有一个流程不断接收市场数据并通过存储过程对表格进行更新。

我不担心同一个代码发生的更新之间的冲突。让我们假设无论出于何种原因,我都可以对同一个代码的两次更新无序应用(这在我的场景中不会发生)。我希望存储过程的争用尽可能少。

在当前场景中,proc 被同时调用很多次并且超时。

proc 当前使用 REPEATABLE READ 作为隔离级别。我没有编写 proc,所以不确定为什么选择它。

我的问题:

  1. 使用 REPEATABLE READ 是否可能(间接)导致这些超时?
  2. 根据我的上述标准,READ UNCOMMITTED 会是更好的选择吗?

【问题讨论】:

    标签: sql-server isolation-level


    【解决方案1】:

    随着隔离级别的提高,并发性下降。隔离度越高,并发度越低。使用 REPEATABLE READ 或 SERIALIZABLE 等高并发级别会导致争用、阻塞和低并发。

    SNAPSHOT 除外。快照,又名。行版本控制,是不同的。使用快照 ON 读取器永远不会阻塞写入器。它通常非常适合同时进行密集读取和写入的工作负载。这是有代价的,但我强烈建议您首先调查启用 SNAPSHOT 的性能:

    请注意,您的读者也必须设置隔离级别。

    【讨论】:

    • 很有趣,我会阅读这个。 READ UNCOMMITTED 会是下一个最佳选择吗,因为它是下一个最低的隔离级别?
    猜你喜欢
    • 2020-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-09-27
    • 1970-01-01
    • 1970-01-01
    • 2014-02-16
    • 2019-02-14
    相关资源
    最近更新 更多