存储引擎就是存储数据,建立索引,跟新/查询等技术的实现方式,存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称作表类型.
-- 查询建表语句 默认的存储引擎是InnoDB
show create table history
-- 创建表的时候指定存储引擎
create table tableName(
...
) engine = InnoDB(不指定的默认)
-- 查询当前数据库支持的存储引擎
show engines
InnDB是一种兼顾高可靠性和高性能的通用存储引擎,在MYSQL5.5后 ,InnoDB默认是MYSQL的存储引擎.
特点
提高数据库检索的效率,通过索引对数据进行排序,降低数据成本,降低 CPU的消耗
索引列也要占用空间,索引大大提高了查询效率,但是却也降低更新表的速度.
MYSQL的索引实在存储引擎层实现的,不同的存储引擎有不同的结构
查询索引的时候可以对半查找,但是有可能成为单向链表查询性能会大大降低,大数据量情况下,层级较深,索引速度慢
可以自平衡,但是 大量数据下层级越深,检索 速度慢
树的度数:值的是一个节点的子节点的个数,演变过程:达到最大度数-1中间节点向上分裂,
数据存放在叶子节点,叶子节点是一个链表,最后实现了单链表,非叶子节点起到索引的作用.
MYSQL对经典的B+Tree进行了优化.在原B+Tree的基础上,增加一个指向相邻叶子结点的的链表指针,形成了带有顺序的B+Tree
通过一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储在hash表中
特点:
存储引擎支持:memory InnDB具有自适应hash索引
为什么InnDB存储引擎选择使用B+Tree索引?
选择使用B+Tree索引?