SQL标准定义了四个级别的事务隔离。 | 隔离级别 | 脏读 | 幻读 | 不可重复读取 | | -------- | ------ | ------ | ------------ | | 读未提交 | 可能 | 可能 | 可能 | | 读已提交 | 不可能 | 可能 | 可能 | | 可重复读 | 不可能 | 可能 | 不可能 | | 可串行读 | 不可能 | 不可能 | 不可能 | PostgreSQL只提供两种隔离级别的原因是,这是把标准的隔离级别与多版本并发控制架构映射相关的唯一合理方法。 1. 读已提交 这是PostgreSQL中默认的隔离级别,当一个事务运行在这个隔离级别时,一个SELECT查询只能看到查询开始前已提交的数据,而无法看到未提交的数据或者在查询期间其他的事务已提交的数据。(通过快照实现) 2. 可串行化 可串行化提供最严格的事务隔离。这个级别模拟串行的事务执行,就好像事务是一个接着一个串行的执行。不过,这个级别的应用必须准备在串行化失败的时候重新启动事务。