b树和b+树的区别
b树的是每个节点都存储的了主键和数据,b+树只有叶子结点存储了数据和主键,非叶子结点只存储了主键b+树的增加和删除节点操作
每个节点有m个数据有序排列,该节点的父节点会记录所有子节点的最小数据,兄弟节点之间也会有双向链表链接,当超过m个数据时候就会分裂,分裂一般规则是取中间值的数据作为分裂节点,并将分裂节点的数据提到父节点,如果父节点也满足分裂要求的话则也进行分裂
如果按照一直按照一般情况分裂的话则可能出现左右不平衡,树的阶数过高且每届的数据也没有填满,解决方法(我其实没太看懂)
b+删除数据的过程就是添加过程的逆过程,首先需要了解一个概念“填充因子”,默认是0.5,当一个节点的数据不足一半则需要进行节点合并
问题:左节点是满节点,自身只剩下一个节点,且自己是最右节点,这种情况下需要合并吗?
3.show index的重点
show index语句查询出的表会有一个Cardinality列,该列表示该索引列的数据重复度,该数值应该尽量接近1,如果太小需要考虑是否需要删除索引
该列不是实时更新的,可以使用“analyze table xxname”去更新该值的数据