PostgreSQL基础(十):PostgreSQL的并发问题

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。

docx image

基于上图的操作查看一波效果

事务A

事务B

互联网面试,关注三帮大数据,一起学习!

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容