Movatterモバイル変換


[0]ホーム

URL:


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

最新推荐文章于 2025-04-23 07:00:00 发布
转载最新推荐文章于 2025-04-23 07:00:00 发布·1.8k 阅读
· 1
· 4
文章标签:

#oracle的mvcc解析

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

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

简单来说,在MVCC机制还没有出现之前,数据库中读写是互斥的,而通过MVCC机制使得读写不互斥。因此MVCC使关系型数据库并发读写能力得到很大的提高,而大多数OLTP系统中的85%以上是读操作。

Oracle的MVCC实现方式

Oracle的多版本并发控制是基于块级的,利用Oracle UNDO/回滚段机制。在回滚段中保存了某个数据被修改之前的前映像的数据。

当我们在数据中查询之前版本的数据时

最低0.47元/天 解锁文章
确定要放弃本次机会?
福利倒计时
::

立减 ¥

普通VIP年卡可用
立即使用
参与评论您还未登录,请先登录后发表或查看评论

博客等级

码龄7年
75
原创
28
点赞
121
收藏
18
粉丝
关注
私信

热门文章

上一篇:
查询oracle 表记录数,Oracle查询数据库中所有表的记录数
下一篇:
oracle ora_p0,NHibernate储存过程ORACLE时提示"ORA-00911: invalid character"

大家在看

最新文章

目录

展开全部

收起

目录

展开全部

收起

上一篇:
查询oracle 表记录数,Oracle查询数据库中所有表的记录数
下一篇:
oracle ora_p0,NHibernate储存过程ORACLE时提示"ORA-00911: invalid character"

最新文章

目录

评论
被折叠的  条评论为什么被折叠?到【灌水乐园】发言
查看更多评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值

[8]ページ先頭

©2009-2025 Movatter.jp