Mysql详解--知识整理

【持续更新,自己整理用】
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中根结点是会预读到内存中的,所以结点的物理地址固定会比较好!
posted @ 2020-12-02 11:13  HK_HUST  阅读(143)  评论(0编辑  收藏  举报