可序列化和可重复读取隔离级别之间有什么区别?

时间:2012-11-14 06:58:36

标签: sql database

可序列化和可重复读取隔离级别之间有什么区别?任何人都可以举一个简单的例子。

2 个答案:

答案 0 :(得分:34)

要点:

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

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

请参阅此示例和说明

隔离级别 - 可序列化

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

隔离级别 - 可重复读取

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

答案 1 :(得分:8)

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

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

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