分类标签归档:PostgresSQL

[ PGsql ]


为什么PostgreSQL的回滚是瞬间完成的?

pg数据库的回滚是瞬间完成的。看到这句话是不是觉得pg很先进,确实是这样,但是也是有代价的,下面聊一聊这个问题。
事务的回滚和数据库的MVCC机制是分不开的,先看看以oracle和mysql为代表的基于undo表空间实现的mvcc。 以mysql为例,mysql undo两个最重要的功能,一个是实现了写不阻塞读,或者说是mvcc,另外一个当然就是事务的回滚。
MySQL在进行数据操作时,先将数据备份到undo段中,然后再进行数据的修改,这样未提交的数据会保存一份前镜像在undo中,同时数据行上的rollpointer指针指向undo段上的老数据

< Read more >