MyISAM与InnoDB索引结构
2016-11-19 19:32
344 查看
动机
在学习B树与B+树的时候,在想为什么这2个树会被数据库存储使用了,有什么好处吗?所以就此探索了一下。局部性原理与磁盘预读
磁盘读取速度慢,为了提高读取速度,就要减少IO,那么磁盘往往不是一次读取一个字节,而是一次读取一页(通常是4K),这是因为计算机中局部性原理:当一个数据被使用到,其附近的数据也通常会马上被使用。预读可以提高I/O效率,那么如果B树的一个节点恰好是一个页的长度的话,每次读取就会读取一个节点,这样不就很好了!其读取的每个节点可以一次IO读取出,树的高度最小,次数最少。(红黑树H会很高)时间复杂度=树的高度=logM(N)以M为底N的对数。在实际运用的时候,M会很大,使得H不超过3。这就是为什么选择B树的原因。
MyISAM
MyISAM可以没有主键,那么这是怎么实现的呢?所有的索引都会建立一个B+树,叶子节点存储索引的值,然后每个索引对应一个地址,这个地址的内容就是一项数据。这样的索引叫做“非聚集“
InnoDB
这个索引称为“聚集索引“,因为在B+树叶子节点中,就存的是真正的数据。而对于辅助索引,InnoD会在叶子节点的存储主索引的地址
联系我
QQ 1906362072
Mail hellowangqihang@gmail.com
相关文章推荐
- myisam与innodb索引组织逻辑结构
- Myisam和Innodb索引实现的不同(存储结构)
- InnoDB引擎的索引和存储结构
- MyISAM索引文件头部结构(5.1.40)
- MySQL 表结构MyISAM 和 InnoDB 讲解
- mysql 索引长度tips innodb和myisam引擎
- MySQL8.0的InnoDB和MyISAM是否支持hash索引
- MyISAM 和InnoDB 的区别.(存储,索引, 事务, 锁)
- 面试常考 MySQL优化 事务处理 MyISAM和InnoDB索引实现
- 从并发和索引说说innodb和myisam的区别
- myisam和innodb索引实现的不同
- MyISAM和InnoDB的索引实现
- 14.8.2.2 InnoDB索引的物理结构
- myisam和innodb索引实现原理
- mysql索引覆盖之innodb和myisam效率问题
- MyISAM和InnoDB索引引擎的B+树索引实现
- B树和B+树 及 MyISAM和InnoDB存储引擎的B+树存储索引的实现
- myisam和innodb索引实现的不同
- mysql 索引长度tips innodb和myisam引擎
- MySQL的MyISAM和InnoDB存储引擎表结构