【持续更新,自己整理用】
B-Tree 与 B+Tree

  • B树索引最通俗易懂的介绍 - xiaohouye - 博客园 (cnblogs.com)
  • B树非叶子节点由关键字+ 数据组成,所以遍历过程中就能获取到数据。而B+树的节点都会出现在叶子节点,非叶子节点只有关键字,数据全部在叶子节点。并且叶子节点间有指针连接
  • 计算机中磁盘存储数据最小单元是扇区一个扇区的大小是 512 字节,而文件系统(例如XFS/EXT4)他的最小单元是,一个块的大小是 4k,而对于我们的 InnoDB 存储引擎也有自己的最小储存单元——(Page),一个页的大小是 16K
  • 为什么关系型数据库B+Tree来存储数据:【1.B-Tree每个节点需要存储(关键字+数据),而B+Tree只存储关键字;每个页的大小有限,所以同一个页中,B+Tree能存储更多的数据。2.B+Tree 可以通过找到关键字数据后,通过遍历链表方便的找到指定范围内的关键字】
  • InnoDB也有页的概念,默认页的大小为16K,即每次读取数据时是4*4K。。数据库页的分裂如下:1-10的数据原本存储在Page1中,只有一个页,后来因为添加了11,一个页装不下了,需要分裂。分裂是将原来的页复制到一个新的页,然后将原来的页设置为根节点,成为了不存放数据,而是只存放关键字的页,然后再新建一个页放多出来的那个11。分裂后有了3个页。
  • 将原来根节点的数据复制到新的一页,而不是直接创建一个新的页作为根节点,是因为:如果是重新创建根结点,那根结点存储的物理地址可能经常会变,不利于查找。并且在innodb中根结点是会预读到内存中的,所以结点的物理地址固定会比较好!

相关文章:

  • 2021-07-14
  • 2021-05-13
  • 2021-08-12
  • 2021-08-24
  • 2021-10-14
  • 2022-12-23
  • 2021-07-04
  • 2021-06-09
猜你喜欢
  • 2021-12-13
  • 2022-01-06
  • 2021-06-04
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案