首页 > 数据库技术 > 详细

PostgreSQL学习(2)-- mvcc

时间:2018-07-27 18:50:51      阅读:131      评论:0      收藏:0      [点我收藏+]

  在数据库中,并发的操作进行读写数据,则会遇到脏读、不可重复读、幻读、串行化异常等问题。

  数据库事务的特性: 

  1. 原子性(Atomicity):事务作为一个整体被执行,包含在其中的对数据库的操作要么全部被执行,要么都不执行;
  2. 一致性(Consistency):事务应确保数据库的状态从一个一致状态转变为另一个一致状态。一致状态的含义是数据库中的数据应满足完整性约束;
  3. 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行;
  4. 持久性(Durability):一个事务一旦提交,他对数据库的修改应该永久保存在数据库中。
  数据库中存在4种事务隔离级别,读未提交、读已提交、可重复读和可序列化。
  PostgreSQL在9.3版本后,已经支持了这四种标准的事务隔离级别。可以通过SET TRANSACTION命令设置当前事务的隔离级别(Transaction Isolation)。
PostgreSQL事务隔离级别和对应数据库问题的关系
隔离级别 脏读  不可重复读 幻读 串行化异常
读未提交 允许,但pg不支持 可能 可能 可能
读已提交 不可能 可能 可能 可能
可重复读 不可能 不可能 允许,但pg不支持 可能
可序列化 不可能 不可能 不可能 不可能

 

  从上表中可以看到在PostgreSQL中,“读未提交”隔离级别,不允许脏读;“可重复读”隔离级别,不允许幻读。

  

 

PostgreSQL学习(2)-- mvcc

原文:https://www.cnblogs.com/plairst/p/9378931.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!