SQL Server Isolation级别真实世界的例子

时间:2015-07-13 16:48:20

标签: sql-server locking isolation-level read-uncommitted

假设我们需要开发一个竞标应用程序,例如eBay中的竞标应用程序。我们不希望一个用户的出价阻止其他用户的出价,这将导致响应缓慢。此外,当我根据我看到的最高价格出价时,我不想在应用程序结束时说对不起,最高价格不再相同;当我提出要价时,有人推高了价格。

我们应该使用哪种隔离级别?我在想Read Uncommitted 对于脏读和没有锁定但不确定。

我想在SQL Server中听到更多关于隔离级别的实际示例/用例(或者通常,任何其他数据库软件,如果它们之间存在关于隔离级别的相似性)。对我来说,我发现只看定义效率不高。

谢谢。

1 个答案:

答案 0 :(得分:1)

READ UNCOMMITTED听起来是正确的,在你想象的场景的背景下......但那个场景听起来很糟糕!

  

当我根据我看到的最高价格出价时,我不想在应用程序结束时说到对不起,最高价格不再相同;当我提出要价时,有人推高了价格。

也许我误会了,但您是否意味着如果其他人在您准备您的出价时出价?如果是这样,它还有什么意义呢?即使您的出价较低,您是否会赢,只是因为开始您的出价的时间更早?那不会奏效。这必须在您的出价提交时决定。

实际上,这应与READ COMMITTED一起运行,以便用户的出价受到之前所有出价的影响 - 在提交时。这是合理拍卖的要求。出价应按时间顺序运行,由TRANSACTION包裹,并且在交易开始时始终受到最新的最大值,即当用户点击提交按钮时,它们应该受所有的总和影响。在他们之前提交的出价。