重庆思庄Oracle、Redhat认证学习论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 823|回复: 0
打印 上一主题 下一主题

PostgreSQL的多版本MVCC实现方式的优势和劣势

[复制链接]
跳转到指定楼层
楼主
发表于 2023-12-4 22:23:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式


实现MVCC的方法有以下两种。
·第一种:写新数据时,把原数据移到一个单独的位置,如回滚段中,其他用户读数据时,从回滚段中把原数据读出来。
·第二种:写新数据时,原数据不删除,而是把新数据插入进来。


PostgreSQL数据库使用的是第二种方法,
Oracle数据库和MySQL数据库中的InnoDB引擎使用的是第一种方法.


到底哪种好,争论真的很大,来自PG的OPENGUASS,就调整了这个,使用ORACLE的方式来实现 MVCC。

看看专家怎么说:

相对于InnoDB和Oracle,PostgreSQL的多版本的优势在于以下几点:

·事务回滚可以立即完成,无论事务进行了多少操作。
·数据可以进行很多更新,不必像Oracle和InnoDB那样需要经常保证回滚段不会被用完,也不会像Oracle数据库那样,经常遇到“ORA1555”错误的困扰。

相对于InnoDB和Oracle,PostgreSQL的多版本的劣势在于以下几点:

·旧版本数据需要清理。PostgreSQL清理旧版本称为VACUUM,并提供了VACUUM命令进行清理。
·旧版本的数据会导致查询更慢一些,因为旧版本的数据存储于数据文件中,查询时需要扫描更多的数据块



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 支持支持 反对反对
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|重庆思庄Oracle、Redhat认证学习论坛 ( 渝ICP备12004239号-4 )

GMT+8, 2024-11-1 08:16 , Processed in 0.094918 second(s), 20 queries .

重庆思庄学习中心论坛-重庆思庄科技有限公司论坛

© 2001-2020

快速回复 返回顶部 返回列表