PostgreSQL的并发问题
一、事务的隔离级别
在不考虑隔离性的前提下,事务的并发可能会出现的问题:
脏读:
不可重复读:
幻读:
针对这些并发问题,关系型数据库有一些事务的隔离级别,一般用4种。
READ UNCOMMITTED:
READ COMMITTED:
REPEATABLE READ:
SERIALIZABLE:
PGSQL在老版本中,只有两个隔离级别,读已提交和串行化。在PGSQL中就不存在脏读问题。
二、MVCC
首先要清楚,为啥要有MVCC。
多版本并发控制 MVCC
读写操作没有冲突
写写操作,和MVCC没关系,那个就是加锁的方式!
Ps:这里的MVCC是基于读已提交读已提交去聊的,如果是串行化,那就读不到了。
在操作之前,先了解一下PGSQL中,每张表都会自带两个字段
xmin:给当前事务分配的数据版本。如果有其他事务做了写操作,并且提交事务了,就给xmin分配新的版本。
xmax:当前事务没有存在新版本,xmax就是0。如果有其他事务做了写操作,未提交事务,将写操作的版本放到xmax中。提交事务后,xmax会分配到xmin中,然后xmax归0。

基于上图的操作查看一波效果
事务A
事务B
互联网面试,关注三帮大数据,一起学习!
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END









暂无评论内容