zoukankan      html  css  js  c++  java
  • InnoDB实现MVCC(多版本并发控制)它存储了每一行的三个额外的隐藏字段

    1.DB_TRX_ID:一个6byte的标识,每处理一个事务,其值自动+1
    #下面提到的“创建时间”和“删除时间”记录的就是这个DB_TRX_ID的值
    #如insert、update、delete操作时,删除操作用1个bit表示。 
    #DB_TRX_ID是最重要的一个,可以通过语句“show engine innodb status”来查找 
    
    
    2.DB_ROLL_PTR: 大小是7byte,指向写到rollback segment(回滚段)的一条undo log记录
     (update操作的话,记录update前的ROW值)
    
    3.DB_ROW_ID: 大小是6byte,该值随新行插入单调增加。
      #当由innodb自动产生聚集索引时聚集索引(即没有主键时,因为MYSQL默认聚簇表,会自动生成一个ROWID)
      #包括这个DB_ROW_ID的值,
      #不然的话聚集索引中不包括这个值,这个用于索引当中。

    DB_TRX_ID记录了行的创建的时间删除的时间在每个事件发生的时候,每行存储版本号,而不是存储事件实际发生的时间。

    每次事物的开始这个版本号都会增加。自记录时间开始,每个事物都会保存记录的系统版本号。
    依照事物的版本来检查每行的版本号。

    在insert操作时 “创建时间”=DB_TRX_ID,这时,“删除时间”是未定义的;在update时,复制新增行的“创建时间”=DB_TRX_ID,删除时间未定义,旧数据行“创建时间”不变,
    删除时间=该事务DB_TRX_ID;delete操作,相应数据行的“创建时间”不变,删除时间=该事务的DB_ROW_ID;select操作对两者都不修改,只读相应的数据

  • 相关阅读:
    Python基础之文件、目录
    Python基础知识之基本类型、循环
    Python基础知识之函数、模块
    Python基础之小知识要点
    【Android】ADB常用指令与logcat日志(转)
    Android 中的 Service 全面总结 (转)
    Android实现双进程守护 (转)
    Android adb常见问题整理(转)
    Android代码内存优化建议-OnTrimMemory优化
    优化Android应用内存的若干方法
  • 原文地址:https://www.cnblogs.com/zzq-include/p/13532019.html
Copyright © 2011-2022 走看看