48

可序列化和可重复读取隔离级别有什么区别?谁能举个简单的例子。

4

2 回答 2

41

概括:

在可重复读取隔离级别中,可以将新行插入数据集中。

在 Serializable 隔离级别中,所有行在事务期间都被锁定,不允许插入、更新或删除。

请参阅这些示例和说明。

原始链接已损坏 — Wayback Machine 链接来自同一天和同一时间。

隔离级别——可序列化

http://beyondrelational.com/modules/2/blogs/28/posts/10467/sql-server-transaction-isolation-level-serializable.aspx

Wayback Machine SQL Server 事务级别可序列化

隔离级别——可重复读取

http://beyondrelational.com/modules/2/blogs/28/posts/10466/sql-server-transaction-isolation-level-repeatable-read.aspx

Wayback Machine SQL Server 事务级别可重复读取

于 2012-11-14T07:30:47.820 回答
11

可重复读取仅防止不可重复读取(因此您可以在同一事务中读取相同的数据,而不必担心有人更改它——即使很少需要这样做)。

可序列化可防止不可重复读取和幻像行(因此您甚至无法插入数据)。这意味着您可以读取和写入(SELECT,UPDATE)不包含在可序列化事务中的行,但您不能在 TABLE 级别删除或插入行。

可重复读取和可序列化都非常严格,并不总是需要它们!

于 2014-07-03T11:22:02.840 回答