写在前面
存储格式采用的是K-V格式,这种格式的有hash和树,树又分为二叉树、BST、AVL、红黑树,innodb存储引擎采用的是B+tree,今天来看一下Hash和树的区别以及 Btree、B+tree有何不同;
哈希表
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构;也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表;
- 数组:寻址容易,插入和删除困难
- 链表:寻址困难,插入和删除容易
散列表采用的是数组+链表的形式,数组的每个成员包括一个指针,指向一个链表的头,链表可能为空,也可能元素很多,我们根据元素的一些特征把元素分配到不同的链表中去,也是根据这些特征,找到正确的链表,再从链表中找出这个元素;
劣势
- 需要好的hash算法,容易发生hash碰撞、hash冲突、散列不匀均-如上图;
- 无序,进行范围查找的时候,需要挨个找,效率较低;
未完待续;