经常调用的更新SP的正确隔离级别



假设我有一个跟踪股价的表(这个问题的一个很容易关联的例子)。我跟踪1000个股票行情,有一个不断接收市场数据并通过存储过程更新表格的过程。

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

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

进程当前正在使用REPEATABLE READ作为隔离级别。我没有写proc,所以不确定为什么选择这个。

我的问题:

  1. 使用可重复读取是否可能(间接)导致这些超时
  2. 根据我上面的标准,READ UNCOMITTED会是一个更好的选择吗

随着隔离级别的增加,并发性会下降。隔离度越高,并发性就越低。使用高并发级别(如REPEATABLE READ或SERIALIZABLE)会导致争用、阻塞和并发性差。

SNAPSHOT外。快照,又名。行版本控制不同。有了快照ON,读卡器永远不会挡住写入程序。它通常非常适合集中读取和同时写入的工作负载。它是有成本的,但我强烈建议您首先调查启用SNAPSHOT的性能:

  • 了解基于行版本控制的隔离级别
  • 行版本控制资源使用情况
  • 启用基于行版本控制的隔离级别

请注意,隔离级别也必须由阅读器设置。

最新更新