mysql(17)-索引-B-B+树

mySQL的索引是B+树。
数据结构工具网址: https://www.cs.usfca.edu/~galles/visualization/Algorithms.html1

1.树
 

hash   BST
(二叉搜索树)
AVL (二叉平衡树)红黑树(二叉平衡树)B树(多叉树) 
为什么hash不行 1.hash散列不均匀左小,右大。 最长路径和最短路径不超过两倍。一个节点可以放多个值 max.Degree=4时,一个Node里可以有(1,2,3)个。  
2.hash需要大量内存吗?缺点:输入:递增,递减,退化成链表
缺点:插入消耗 带来了查询性能的提升。
缺点:树的深度变深,树高,IO次数会变多。页(4K的整数倍)  
3.不适合范围查询 读多,写少,没问题。性能上:插入和查询近似取了一个平衡。
inndb默认16kb
  
      

磁盘预读:磁盘和内存交互,最小的逻辑单元,称之为页。 数据交换,以页为单位。
查看 page页大小 :show variables like '%innodb_page_size'
2.B树和B+树
   每个都存p,key,value
   B树结构如下图:3层可存4000个数据

B+树结构
叶子节点:    p+key       非最下面一排
非叶子节点:key+value 最下面一排
3层可以存4000万个数据。

为了省字节一般用int做索引,而不是varchar.

posted @ 2020-09-16 22:34  jasmineTang  阅读(68)  评论(0)    收藏  举报