首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在PostgreSQL中实现回滚

问在PostgreSQL中实现回滚
EN

Database Administration用户
提问于 2019-12-11 07:23:52
回答 1查看 500关注 0票数 0

如何在PostgreSQL数据库中实现rollback命令?

我想知道实现细节,以及在执行回滚时到底发生了什么,即数据库存储状态、写前日志(WAL)中的更改。

场景:我有一个名为employees的表,在数据库中磁盘大小为4GB。当我在这个表上打开一个事务以更新单个行,然后回滚更改时,数据库内部会发生什么?新版本的表是否会在磁盘上创建,但由于回滚而保持不活动状态?

EN

回答 1

Database Administration用户

发布于 2019-12-11 13:06:44

除了释放锁、删除文件等一些附带任务外,主要活动是将与提交日志中的事务对应的两个位(在pg_xact中)设置为“中止”,并将文件同步到磁盘。

回滚根本不触及表,而且应该总是快速的。新创建的行版本只是保留在表中(稍后将通过自动真空进行清理),它们只是变得不可见,因为创建它们的事务已被中止。类似于已删除的数据:事务删除行的标记就会变得无效。

票数 4
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/255381

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档