隔离级别定义 - Amazon Neptune
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

隔离级别定义

ACID 中的“I”代表隔离。事务的隔离程度决定了其他并发事务对其所操作的数据的影响程度。

SQL:1992 标准制定了用于描述隔离级别的词汇表。它定义了三种类型的互动(它称之为现象) 这可能发生在两个并发交易之间,Tx1Tx2

  • Dirty read— 发生这种情况Tx1修改物品,然后Tx2之前读过那个项目Tx1已承诺进行更改。之后,如果 Tx1 始终未成功提交该更改或将其回滚,则 Tx2 读取的值从未进入数据库。

  • Non-repeatable read— 这种情况发生在Tx1然后读一个项目Tx2修改或删除该项目并提交更改,然后Tx1尝试重读该项目。Tx1现在读取与以前不同的值,或者发现该项目不再存在。

  • Phantom read— 这种情况发生在Tx1读取一组符合搜索条件的项目,然后Tx2添加符合搜索条件的新项目,然后Tx1重复搜索。Tx1现在获得了与以前不同的一套物品。

这三种交互类型中的任何一种都可能导致数据库中的最终数据不一致。

SQL:1992 标准定义了四个隔离级别,这些隔离级别在三种交互类型及其可能产生的不一致方面具有不同的保证。在所有四个级别上,都可以保证事务完整执行或根本不执行:

  • READ UNCOMMITTED— 允许所有三种交互类型(即脏读、不可重复读以及幻读)。

  • READ COMMITTED— 不可能出现脏读,但可能出现不可重复读和幻读。

  • REPEATABLE READ— 既不可能出现脏读,也不可能出现不可能出现,但仍可能出现幻读。

  • SERIALIZABLE— 三种交互现象均不会发生。

多版本并发控制 (MVCC) 允许另一种隔离,即快照隔离。这保证事务对事务开始时就存在的数据快照进行操作,并且没有任何其他事务可以更改该快照。