• 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 历史信息。

  • 相关阅读:
    VMware ESXi 和 VMware Server 有区别
    安装源与清除缓存
    pip install --upgrade pip
    Linux/Centos查看进程占用内存大小的几种方法总结
    top命令经常用来监控linux的系统状况,比如cpu、内存的使用,程序员基本都知道这个命令。 按 q 退出
    Centos 查看 CPU 核数 和 型号 和 主频
    Docker 运行ELK日志监测系统,汉化Kibana界面
    elasticsearch启动时遇到的错误
    kubernetes 创建超级管理员和密匙
    第七章 AOP(待续)
  • 原文地址:https://www.cnblogs.com/ahguSH/p/7246445.html
Copyright © 2020-2023  润新知