历史版本。 PostgreSQL 7.1 已结束支持。 请参阅 当前版本手册.
9.2. 事务隔离 #
ANSI/ISO 的 SQL 标准根据并发事务之间必须防止的三个现象,定义了四个事务隔离级别。这些不受欢迎的现象是:
- 脏读
一个事务读取了由并发未提交事务写入的数据。
- 不可重复读
一个事务重新读取它之前读过的数据,发现这些数据已经被另一个事务修改(且该事务已在初次读取之后提交)。
- 幻读
一个事务重新执行一个返回满足某个搜索条件的行集合的查询,发现满足该条件的行集合由于另一个最近提交的事务而发生了变化。
四种隔离级别及其对应行为描述如下。
表 9.1. ANSI/ISO SQL 隔离级别
| 隔离级别 | 脏读 | 不可重复读 | 幻读 |
|---|---|---|---|
| 读未提交 | 可能 | 可能 | 可能 |
| 读已提交 | 不可能 | 可能 | 可能 |
| 可重复读 | 不可能 | 不可能 | 可能 |
| 可串行化 | 不可能 | 不可能 | 不可能 |
Postgres 提供读已提交和可串行化两个隔离级别。