ITPub博客

首页 > 数据库 > 数据库开发技术 > 【数据库设计与实现】第二章:数据前像与回滚

【数据库设计与实现】第二章:数据前像与回滚

原创 数据库开发技术 作者:joshua81 时间:2020-09-05 10:20:27 0 删除 编辑

2数据前像与回滚

2.1设计原则

    事务中重要的一点是事务的原子性,即事务中的所有操作要么全部生效,要么全部都不生效。数据的前像和回滚是保证事务原子性的重要手段。修改记录前,先将记录的前像(即修改前的记录)保存下来,当事务需要回滚时,将记录恢复到前像,从而保证事务的原子性。从当前的实现情况来看,前像保存主要有两种技术手段:

  • 本地更新方案:直接在原记录上进行更新,把被更新列的前像保存到独立的undo区域;

  • 异地更新方案:不在原记录上更新,而是克隆1条新记录出来,然后在新记录上进行更新,原记录就是前像;

    Oracle和MySQL采用的都是本地更新方案,本章加入PostgreSQL,从而能够深入地了解异地更新方案的优缺点。在设计数据前像和回滚方案时,有如下几点需要考虑:

  • 记录前像对正常写操作的影响有多大;

  • 根据前像进行回滚,回滚的效率如何;

  • 前像占用的空间如何,回收效率如何;

  • 前像是高价值数据,可以基于前像提供一致性读(MVCC)、闪回等功能,前像的设计是否能高效地实现这些功能;

2.2 Oracle设计原理

    2.2.1 开启一个事务

    2.2.2 Undo Block与Data Block

    2.2.3 事务提交与Block清除

    2.2.4 用户回滚与重启回滚

    2.2.5 一致性读

    2.2.6 闪回

2.3 MySQL设计原理

    2.3.1 开启一个事务

    2.3.2 Undo Log Segment

    2.3.3 事务提交

    2.3.4 用户回滚与重启回滚

    2.3.5 一致性读

    2.3.6 Purge

2.4 PostgreSQL设计原理

    2.4.1 Page与前像设计

    2.4.2 用户回滚

    2.4.3 一致性读

    2.4.4 HOT与Index-Only Scan

    2.4.5 Vacuum

2.5 总结与分析

附件:博客布局不利于展示表格等内容,本章节详细内容见附件。

数据库设计与实现(第二章).pdf


来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/69912723/viewspace-2717309/,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-03-10

  • 博文量
    10
  • 访问量
    2345