博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
MySQL InnoDB存储引擎简析
阅读量:6328 次
发布时间:2019-06-22

本文共 1335 字,大约阅读时间需要 4 分钟。

hot3.png

MySQL存储引擎

InnoDB存储引擎

特点:

  • 支持事务
  • 行级锁
  • B树组织索引
  • 支持外键

InnoBD 多版本(multi-versioned)

InnoDB默认为每一行记录添加了三个字段:

  • DB_TRX_ID (6byte): 该记录最近一次发生inserted或updated操作的事务标识
  • DB_ROLL_PTR (7byte): 回滚指针,指向rollback segment中的undo log记录,undo log记录中包含updated操作之前的行数据
  • DB_ROW_ID (6byte): 新插入行的单调递增ID,当由InnoDB自动生成聚簇索引时,该索引包含Row ID的值,否则DB_ROW_ID列不会出现在任何索引中

聚簇索引(Clustered Index)

每个InnoDB表都有一个用来存储所有行数据的特殊索引:Clustered Index。所有行数据都是通过聚簇索引来组织存储的。 通常情况下,聚簇索引是主键的代名词。

如果没有为InnoDB表定义一个主键,Mysql会选择表中第一个非空的唯一索引列做为聚簇索引。若该表没有主键或合适的唯一索引列,InnoDB内部会在包含row ID的虚拟列上生成一个隐藏的聚簇索引。Row ID的值是根据新插入记录的顺序而单调递增的。

官方文档:

If the table has no PRIMARY KEY or suitable UNIQUE index, InnoDB internally generates a hidden clustered index on a synthetic column containing row ID values. Thus, the rows ordered by the row ID are physically in insertion order.

辅助索引(Secondary Index)

除了聚簇索引之外的所有索引称为辅助索引。

在InnoDB中,辅助索引的每一条记录存储该行的所有主键字段,这些主键字段。InnoDB使用主键的值在聚簇索引中查找对应的记录。

InnoDB索引的物理结构

  • 所有的InnoDB索引都是以B树的形式存储的,索引记录存储在树的叶子节点。
  • 聚簇索引存储记录的所有字段,包含6个字节的transaction ID字段和7个字节的roll pointer字段。
  • 若没有为表设置主键,每个聚簇索引记录还会包含一个6字节的row ID字段。
  • 每个辅助索引记录包含主键的值

覆盖索引(covering index)

覆盖索引:从辅助索引中就可以得到查询的记录,而不需要查询聚簇索引中的记录。

使用覆盖索引的好处: 辅助索引不包含整行记录的所有字段信息,故其大小远小于聚簇索引,因此可以减少大量的IO操作。

MyISAM存储引擎

特点:

  • 不支持事务
  • 表级锁
  • 不支持外键
  • MyISAM表存储有三个文件组成:
    • table_name.frm 存储表结构
    • table_name.MYD 数据文件
    • table_name.MYI 索引文件

转载于:https://my.oschina.net/u/553773/blog/663715

你可能感兴趣的文章
20140420技术交流活动总结
查看>>
SaltStack配置salt-api
查看>>
各种情况下block的类型
查看>>
ThinkPHP 3.2.x 集成极光推送指北
查看>>
MYSQL 表情评论存储(emoji)
查看>>
js作用域链
查看>>
java中如何选择Collection Class--java线程(第3版)
查看>>
ASP.NET页面之间传递值的几种方式
查看>>
Linux系统权限
查看>>
TinyTemplate模板引擎火热出炉,正式开源了~~~
查看>>
android开发之GPS定位详解
查看>>
Mac OS X如何重装 苹果电脑重装操作系统
查看>>
集算器读写EXCEL文件的代码示例
查看>>
Ubuntu Server上搭建可用于生产环境的ASP.NET服务器
查看>>
php---PHP使用GD库实现截屏
查看>>
华为交换机802.1x动态下发vlan配置
查看>>
spring boot websocket + thy模版
查看>>
查看文件的真实路径
查看>>
如何开发一个自己的 RubyGem?
查看>>
职工系统150206308
查看>>