码迷,mamicode.com
首页 > 数据库 > 详细

InnoDB多版本存储引擎简介

时间:2017-07-27 20:06:42      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:相关信息   处理   crash   mvcc   彻底删除   相对   mic   mysq   segment   

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

InnoDB多版本存储引擎简介

标签:相关信息   处理   crash   mvcc   彻底删除   相对   mic   mysq   segment   

原文地址:http://www.cnblogs.com/ahguSH/p/7246445.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!