mysql体系结构
- 连接层
- 服务层
- 引擎层(索引)
- 存储层
存储引擎
存储引擎是基于表建立的,默认是innoDB
show create table tb;
查看当前数据库支持的存储引擎
show engines;
InnoDB
特点
- DML(数据增删改)遵循ACID模型,支持事务
- 行级锁,提高并发访问性能
- 支持外键约束,保证数据的完整性和正确性
每一张表对应一个ibd文件,在cmd中可以通过ibd2sdi xxx.ibd查看表结构,返回json数据格式
逻辑存储结构
MyISAM
特点
- 不支持事务,不支持外键
- 支持表锁,不支持行锁
- 访问速度快
每一张表对应一个MYD、MYI、sdi文件
Memory
特点
- 内存存放、hash索引
每一张表对应一个sdi文件
索引
索引是一种用于高校搜索数据的有序数据结构
索引结构
- B树
-
B+树
所有的元素都出现在叶子结点中
叶子结点形成一个链表
-
hash
hash索引只能用于对等操作,不能用于范围查询
无法利用索引完成排序操作
-
r-tree
-
full-text
为什么innoDB选择b+树作为存储结构?
- 相对于二叉树,层数较少,查询效率高
- 相对B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低
- 相对Hash索引,B+tree支持范围匹配及排序操作
索引分类
主键索引
唯一索引
常规索引
全文索引
聚集索引
- 有主键,主键索引就是聚集索引,叶子结点挂的数据就是这一行的数据
二级索引
- 叶子结点挂的数据是对应的id值
- 回表查询,先从二级索引拿到主键值,再从聚集索引找到对应的值
索引语法
create [unique][fulltext] index index_name on tablename(index_col_name);show index from table_name;drop index index_name on table_name;