Mysql常用存储引擎——与——索引

1、InnoDB存储引擎
InnoDB相对来说属于一种均衡性的存储引擎,中规中矩,各方面都还不错,最大的特点是支持事物

2、MyISAM存储引擎
MyISAM的查询效率很高,但是不支持事物

Mysql5.5之后默认都使用InnoDB

索引:优化查询
索引是优化查询的,索引一般加在查询几率大的字段上,但是如果有很多字段的查询机率都很大,就不要加了。因为索引的底层机制是一个B+树,每次添加或者删除一个数据,数据结构都要进行调整,如果一个表加了20个索引,那么加一条数据至少要提炼20个数据,会导致性能严重下降。所以,滥用索引会导致性能严重下降

B+树是对B树的一种变形树,它与B树的差异在于:

有k个子结点的结点必然有k个关键码;
非叶结点仅具有索引作用,跟记录有关的信息均存放在叶结点中。
树的所有叶结点构成一个有序链表,可以按照关键码排序的次序遍历全部记录。

B和B+树的区别在于,B+树的非叶子结点只包含导航信息,不包含实际的值,所有的叶子结点和相连的节点使用链表相连,便于区间查找和遍历。

B+ 树的优点在于:

由于B+树在内部节点上不包含数据信息,因此在内存页中能够存放更多的key。 数据存放的更加紧密,具有更好的空间局部性。因此访问叶子节点上关联的数据也具有更好的缓存命中率。
B+树的叶子结点都是相链的,因此对整棵树的便利只需要一次线性遍历叶子结点即可。而且由于数据顺序排列并且相连,所以便于区间查找和搜索。而B树则需要进行每一层的递归遍历。相邻的元素可能在内存中不相邻,所以缓存命中性没有B+树好。
但是B树也有优点,其优点在于,由于B树的每一个节点都包含key和value,因此经常访问的元素可能离根节点更近,因此访问也更迅速。

猜你喜欢

转载自blog.csdn.net/luanluan8888/article/details/84979733