zoukankan      html  css  js  c++  java
  • InnoDB多版本存储引擎简介

    SHOW ENGINES
    查看所有存储引擎及支持情况

    当启动InnoDB的时候,会自动进行兼容性检查

    ACID 模型
    Atomicity
    主要与事务操作相关,autocommit、Commit、rollback
    Consistency
    用于保护数据的引擎内部处理程序,包括doublewrite buffer、crash recovery
    Isolation
    主要与事务操作相关,autocommit、isolation level 、locking
    Durability
    主要涉及mysql 软件与一些特定硬件的配置

    InnoDB - 多版本存储引擎
    引擎会保存旧版的数据信息(例如更新/删除的行)以支持事务操作的功能特征。
    InnoDB内部会自动为每行增加三个字段:
    1.DB_TRX_ID 6-byte,唯一标记一个最新执行的事务。
    2.DB_ROLL_PTR 7-byte,又称为roll pointer,其指向rollback segment中的 一个undo log record。
    3.DB_ROW_ID 6-byte,包含一个在新行被插入之后单调递增的ROW ID。如果Innodb数据表自动的形成了一个聚集索引,那么这个索引中就会包含row id的值。否则,DB_ROW_ID不会出现在任何索引中。

    rollback segment 是保存事务操作相关信息的数据结构。
    保存在rollbacksegment 中的 undo log 包括insert 和 update两个类型。其中,insert undo log 只用于事务回滚,一旦事务提交就可以被删除。而Update undo log 还可以用于一致性读。
    undo log record 的物理空间比与之相对应的insert、update row 所占物理空间要小很多。
    在多版本机制下,当你执行一个delete 语句,row并没有立刻从磁盘上被彻底删除。仅仅当被标记为deletion 的undo log 记录被丢弃之后(rollback segment不需要再持有该记录的时候) ,row才真正被删除。
    innodb_max_purge_lag?

    MVCC (multiversion consurrency control)和Secondary Indexes (二级索引)
    每张表只能有一个cluster index (聚簇索引),其他的非聚簇索引都称为二级索引。
    cluster index :记录更新时,从隐藏的系统列找到undo log的入口,并从中获取历史版本记录信息。
    secondary index(columns 的一个子集):通过cluter index 作为跳板获取undo log 历史信息。

  • 相关阅读:
    asp.net错误日志写入
    UniqueID和ClientID的来源
    js刷新页面方法大全
    Web开发 < base target>
    Asp.net页面使用showModalDialog时Postback弹出新页面解决办法
    Asp.net 回车默认按钮
    SQL语句添加删除修改字段及一些表与字段的基本操作
    国内使用google地图的初级使用
    [Asp.NET MVC+EasyUI] TreeGrid全部加载及懒加载示例
    SqlServer清空数据表数据
  • 原文地址:https://www.cnblogs.com/ahguSH/p/7246445.html
Copyright © 2011-2022 走看看