首页 > 编程知识 正文

tree new bee是什么梗,线索二叉树和二叉搜索树一样吗

时间:2023-05-04 04:37:19 阅读:159593 作者:1885

目录1、索引2是什么,innodb索引的类型1 .聚簇索引2 .非聚簇索引(次索引、次索引) 3、B Tree特征4、问题1 )为什么myyyd 比如b树? 2. InnoDB的一棵b树可以存储多少行数据? 五.参考资料

一.什么是索引

索引是存储引擎用于快速查找记录的数据结构,索引类型不同,底层数据结构也不同。 索引优化必须是查询性能优化中最有效的手段。 索引可以轻松地将查询性能提高几个数量级,而“最好的”索引可能比“最好的”索引好两个数量级。 索引的优点可以很容易地总结出来。

索引大大减少了服务器扫描的数据量。 索引有助于服务器避免排序、分组和临时表。 索引可以将随机I/O变为顺序I/O。 只有在有助于存储引擎快速查找记录的好处大于额外工作时,索引才有效。 对于非常小的表,简单的全表扫描在大多数情况下更高效; 对于中到大的表,索引更有效率。

二、innodb索引类型innodb是MySQL数据库的默认存储引擎,也是目前企业生产中使用最多的存储引擎,所以这里直接总结innodb支持的索引类型

1 .聚簇索引聚簇索引实际上在同一个结构中维护着B Tree索引和数据行。 如果表具有聚簇索引,则该数据行实际上存储在索引的集中冰淇淋(leaf page )中。 一个表中只能有一个聚簇索引,因为数据行不能同时位于两个不同的位置。

聚簇索引默认是主键,如果表中没有定义主键,则为InnoDB 会选择一个唯一的非空索引代替。 如果没有这样的索引,只有InnoDB 会隐式定义一个主键来作为聚簇索引InnoDB聚集在同一页面上的记录。 包含相邻健康值的页面可能相距很远。 如果主键被设置为聚簇索引,则必须首先删除主键,添加所需的聚簇索引,然后撤消主键设置。

2 .在非集群索引(次索引,次索引) innodb中,在集群索引上创建的索引称为次索引,而次索引访问数据总是被称为次索引非聚簇索引都是辅助索引是存储在辅助索引叶节点中的主键值,而不再是行的物理位置,如复合索引、前缀索引和唯一索引。

三、B Tree特征innodb的基础采用B Tree结构,这意味着所有的值都是按顺序存储的,每个集中的冰淇淋到根的距离相同; 因为b树按顺序存储数据,所以MySQL可用于order by和group by。 索引包含实际的列值,因此某些查询只需使用索引就可以完成所有查询。 也就是说,复盖索引。

集群索引的插入速度很大程度上取决于插入顺序。 等待补充。

四.为什么面试题MySQL的索引要用b树而不是其他树结构? 比如b树? 简单版本的回答是,由于b树无论是叶节点还是非叶节点都保存数据,所以在非叶节点能够保存的指针的数量变少(部分资料也称为扇出),在非叶节点能够保存的指针较少的情况下,必须保存大量的数据

2. InnoDB的一棵b树可以存储多少行数据? 简单的问题回答是:约2千万行。InnoDB存储引擎的最小存储单元为页,InnoDB页的默认大小为16k,因为数据表中的所有数据都存储在页中假设一行数据的大小为1k,则每页可以存储16行这样的数据。 如果用b树整理这些数据的话。 如图所示:

页面可用于存储数据,也可用于存储键值指针。 b树的叶节点存储数据,叶以外的节点存储键值指针。 索引组织表通过非叶节点的二分搜索法和指针来特定数据位于哪个页面,进而在数据删除页面上找到需要的数据

这里首先假设b树的高度为2,即存在根节点和几个叶节点。 那么,需要计算除叶以外的节点可以存储多少指针。 实际上,假设主键ID为bigint类型,长度为8个字节,指针大小在InnoDB源代码中设置为6个字节。 这样一共14个字节。 要说一页能存储多少指针,实际上是16384/14=1170。

如上所述,每个叶节点(页面)的记录数=16K/1K=16。 (这里假设1行记录的数据大小为1k,实际上现在很多互联网业务数据记录大小通常为1k左右)。

那么,高度为2的b树可以计算出可以存储1170*16=18720条数据记录。

根据同样的原理,可以计算出高3的b树可以保管。 记录为1170117016=21902400瓶。 因此,在InnoDB中,b树的高度通常为1-3层,可以满足千万级别的数据存储。 在搜索数据时,由于每页的搜索表示一次IO,因此主键索引查询通常允许通过一到三次IO操作来搜索数据。

五.参考资料InnoDB的一棵b树可以存储多少行数据? 《高性能MySQL》

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。