zoukankan      html  css  js  c++  java
  • 描述undo的三个作用

    1rollback

      1、一个事务开始,生成一个事务id(找事务counter

      2、读取系统事务表,找到一个回滚段(找相对空闲的),读取回滚段的段头块(段头里面有很多行,找到其中空闲的行,把事务id写进去,写进去之后一个事务就开始了,一个事务槽盛放一个事务id,也就是说一个事务开始了需要找到事务槽把事务id写进去)和一些回滚页(事务数据块)(我要修改一个数据行, 在数据行里需要把事务id写进去,在后面找一个undo块盛放修改前的数据),rollpointer(回滚指针)指向盛放旧数据的最后一个undo块,最后一个块指向前一个块,都链起来。当回滚的时候,先找到最后一个undo块,依次往前逆着读,把脏数据块还原成原来的数据块。

    2、写不阻塞读

      采用的是数据行的rollpointer指针,结合undo数据,读取数据修改前的值,构造一致性读,避免脏读。

      能够避免脏读,就不需要采用写阻塞读的方式来避免脏读。

    3、崩溃恢复(redo前滚,undo回滚。未提交事务主动回滚,未提交事务信息在事务槽里写着)

      数据库在运行期间,突然崩了,数据库启动之后,需要redo前滚,就会有很多未提交的事务也滚回来了,系统中存在很多未提交的事务,并且这些事务的会话断了,不可能继续完成了,就需要对未提交事务回滚了,所有的未提交事务的信息都在事务槽里面存着,读取事务槽,把未提交事务回滚。

  • 相关阅读:
    Java Spring MVC框架搭建(一)
    LeetCode 239. Sliding Window Maximum(Hard)
    LeetCode 238. Product of Array Except Self
    LeetCode 237 Delete Node in a Linked List
    LeetCode 236. Lowest Common Ancestor of a Binary Tree
    LeetCode 235 Lowest Common Ancestor of a Binary Search Tree
    LeetCode 234. Palindrome Linked List
    LeetCode 232. Implement Queue using Stacks
    LeetCode 231. Power of Two
    LeetCode 230. Kth Smallest Element in a BST
  • 原文地址:https://www.cnblogs.com/5945yang/p/11265866.html
Copyright © 2011-2022 走看看