首页
学习
活动
专区
圈层
工具
发布

PostgreSQL的clog—从事务回滚速度谈起

如果是之前学习别的数据库的人,看PostgreSQL会感觉到有句话非常奇怪:“PostgreSQL的回滚是立即完成的,不会受到事务大小本身的影响”。 奇怪在哪里呢?...一个kill命令过去之后,我们当时俩DBA开始慢慢数—小蚂蚁慢慢爬——碰到—颗大豆芽——碰到两颗大豆芽—— 最终在将近三个小时的rollback之后,这个事务完成回滚,业务系统恢复。...看到这里,就可以明白,只要事务提交的时候,设置状态为已提交,而事务回滚的时候,设置状态为已中断,就可以达到目的,的确避免了操作数百万行的事务突然要回滚时候的巨大代价。...当这个事务最终提交或者回滚的时候,其最终状态就会被记录入clog。 事务提交与回滚时候的clog操作 ---- 首先来说提交。...当事务之后提交,或者回滚的时候,pg是必然不会回头改这个标记的,否则无论提交还是回滚,都是一个代价巨大的事情。

2.1K20

PostgreSQL的clog—从事务回滚速度谈起

:“PostgreSQL的回滚是立即完成的,不会受到事务大小本身的影响”。...一个kill命令过去之后,我们当时俩DBA开始慢慢数—小蚂蚁慢慢爬——碰到—颗大豆芽——碰到两颗大豆芽—— 最终在将近三个小时的rollback之后,这个事务完成回滚,业务系统恢复。...看到这里,就可以明白,只要事务提交的时候,设置状态为已提交,而事务回滚的时候,设置状态为已中断,就可以达到目的,的确避免了操作数百万行的事务突然要回滚时候的巨大代价。...当这个事务最终提交或者回滚的时候,其最终状态就会被记录入clog。 事务提交与回滚时候的clog操作 ---- 首先来说提交。...当事务之后提交,或者回滚的时候,pg是必然不会回头改这个标记的,否则无论提交还是回滚,都是一个代价巨大的事情。

3.1K20
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    OracleMysql迁移到Postgresql事务回滚行为差异及改造方法

    Mysql或Oracle迁移到Postgresql系产品后,经常会发生事务回滚导致的问题,具体问题一般都是类似于: 为什么我没rollback,我的事务就自己回滚了?...下面我举一个简单的例子,说明下PG和其他两款DB在事务回滚行为上的差异 汇总 Oracle事务内报错后的行为 Class.forName("oracle.jdbc.driver.OracleDriver...Postgresql事务内报错后的行为 public class TestPgsql { private static final String URL = "jdbc:postgresql:...ERROR: current transaction is aborted, commands ignored until end of transaction block 第二个差异点:报错后,事务自动回滚...不可以,在报错时事务已经回滚,虽然提交没有报错,但是写入的数据不会生效 commit后 数据没有写入: 迁移到Postgresql后如何改造?

    1.8K30

    git commit回滚

    2.1 git reset --hard 丢弃最新的提交 代码提交后,需求发生变化导致之前提交的已经不合适,或者 代码提交后发现有严重bug,需要回滚可是使用这个命令: git reset --hard...tips: 1,HEAD^ 表示 最新提交HEAD位置往回数一个提交, 几个 ^ 就往回数几个提交; 2,HEAD~n 表示 新提交HEAD位置往回数n个提交 可以发现,reset 命令只能回滚最新的提交...如果最后一次commit需要保留,而只想回滚之前的某次commit,reset命令可能就无法满足了。...总结: 回滚最新的提交 :git reset 和 git rebase 命令都可以 回滚中间某次提交: git rebase 可以, git reset 不可以 如果提交已经同步到远程仓库,需要使用git...push origin -f branch(分支名) 来将回滚也同步到远程仓库(master 分支谨慎使用 -f)

    10K30

    Git撤销&回滚操作

    但本次只想提交其中一部分文件 $ git add * $ git status # 取消暂存 $ git reset HEAD 情况三:文件执行了git add操作,但想撤销对其的修改(index内回滚...现在想撤销到其中某次Commit git reset [--hard|soft|mixed|merge|keep] [commit|HEAD] 具体参数和使用说明,请查看:Git Pro深入浅出(二)中的重置揭秘部分 回滚...我们将已被提交到“远程仓库”的代码还原操作叫做“回滚”!注意:对远程仓库做回滚操作是有风险的,需提前做好备份和通知其他团队成员!...checkout 如果你回到当前HEAD指向 git checkout 情况一:撤销指定文件到指定版本 # 查看指定文件的历史版本 git log # 回滚到指定...情况三:回滚某次提交 # 找到要回滚的commitID git log git revert commitID 删除某次提交 git log --oneline -n5 ?

    2.9K22

    回滚重置git merge

    代码合并的时候,有时候合并后发现合并错了,需要回滚或重置 回滚merge其实有两种方式,一种是revert,一种是reset 环境准备 构造一个已经merge的分支,并准备撤销/回滚刚才的merge...& git commit -m 'commit 4' 合并feature到master git checkout master git merge feature 假如这个时候发现合并错误,想撤销/回滚...d904008ec11d364b674a720a9755bd5e247903fe is a merge but no -m option was given. fatal: revert failed 回滚失败...no -m option was given,这是因为merge是把两个分支合并到一起,回滚的话,就必须告诉git需要回滚到哪个个分支 commit d904008ec11d364b674a720a9755bd5e247903fe...一般是有冲突需要解决),想取消,则执行命令 git merge --abort 参考 当你决定去 revert 一个merge commit git reset soft,hard,mixed之区别深解 Git回滚

    4K20
    领券