oracle的mvcc解析,PostgreSQL原理:Oracle 和 MySQL 中MVCC机制详解

MVCC(多版本并发控制)提高数据库并发读写能力,常见于Oracle、MySQL和PostgreSQL。Oracle基于块级,利用UNDO/回滚段;MySQL在InnoDB引擎中也用undo段,但基于记录级;PostgreSQL不依赖undo,通过在数据行中保存多个版本实现。三种数据库各有特点,适应不同场景。
摘要由CSDN通过智能技术生成

MVCC,Multi-version Concurrency Control ,顾名思义指的是多版本并发控制。在介绍MVCC之前我们先来简单了解下事务的隔离级别:

read uncommitted:脏读,一个事务可以读到另外一个事务未提交的数据,大多数关系型数据库不支持。

read committed:提交读,一个事务可以读到其他事务已经提交的数据,大多数数据库的缺省模式。

repeatable read:一个事务执行过程中访问的数据是一致的,也就是一个事务中多次读到的数据不会变化。

serializable:序列化,事务串行化执行,避免不一致。代价很大,OLTP系统中很少使用。

在大多数关系型数据库中默认的事务隔离级别都是read committed(mysql中默认是repeatable read)。也可以根据业务场景的需要去选择合适的隔离级别,例如在一个事务中,使用select for update来避免读到不一致的数据,如果不是为了排他性的锁定,用RR事务隔离级别来代替可以获得更好的性能。

常见的并发控制有:

MVCC:Multi-version Concurrency Control (多版本并发控制)。

S2PL: Strict Two-Phase Locking(严格二阶段锁):读写互斥,保证串行。

OCC:Optimistic Concurrency

Control(乐观并发控制):和悲观锁不同,乐观锁在提交前不加锁,提交时如果读取时的数据被其他事务修改并提交,则回退事务。

简单来说&#x

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值