MySQL 表存储方式之索引组织表和堆表

索引组织表(Index-Organized Tables)

索引组织的表具有B树的变体的存储组织。以主键排序的方式将索引组织表的数据存储在B树索引结构中。索引结构中的每个叶块都存储关键字列和非关键列。对应的主键索引也叫聚集索引,其他列的索引叫secondary index,也叫做二级索引。二级索引的每条记录都包含该行的主键值,InnoDB使用这个主键值来搜索聚集索引中的行。因此,较短的主键值是有利的,可以缩小二级索引的空间。

聚集索引 clustered index

每个表都有一个聚集索引,其实上面所说的主键索引也叫聚集索引,严格意义上是不正确的。因为:

  • 可能表并没有定义主键,那么InnoDB会将唯一索引并且没有null的列作为聚集索引
  • 如果也不符合上述情况,InnoDB就会使用一个6字节的隐藏ID作为聚集索引(这个ID也是自增的,但是会和其他与此情况相同的表共用这些ID值)

聚集索引的而叶子节点存储了行中所有列的信息,还包括额外的row_id,rollback pointer,trix_id等信息,这些信息会在MVCC中用到。

堆组织表(Heap Organize Table)

就是一般的表,数据插入时存储位置是随机的,主要是数据库内部块的空闲位置决定的。
堆表中,主键索引和普通索引一样,叶子节点存放的都是指向堆表中数据的指针(指向物理地址)。
MySQL的MyISAM 和 oracle都支持堆表

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值