Mysql Day04

mysql体系结构

  • 连接层
  • 服务层
  • 引擎层(索引)
  • 存储层

存储引擎

存储引擎是基于表建立的,默认是innoDB

show create table tb;

查看当前数据库支持的存储引擎

show engines;

InnoDB

特点

  • DML(数据增删改)遵循ACID模型,支持事务
  • 行级锁,提高并发访问性能
  • 支持外键约束,保证数据的完整性和正确性

每一张表对应一个ibd文件,在cmd中可以通过ibd2sdi  xxx.ibd查看表结构,返回json数据格式

逻辑存储结构

Mysql Day04_第1张图片

MyISAM

特点

  • 不支持事务,不支持外键
  • 支持表锁,不支持行锁
  • 访问速度快

每一张表对应一个MYD、MYI、sdi文件

Memory

特点

  • 内存存放、hash索引

每一张表对应一个sdi文件

Mysql Day04_第2张图片

索引

索引是一种用于高校搜索数据的有序数据结构

索引结构

  • B树

Mysql Day04_第3张图片

  • B+树

所有的元素都出现在叶子结点中

叶子结点形成一个链表

Mysql Day04_第4张图片

Mysql Day04_第5张图片

  • hash

Mysql Day04_第6张图片

hash索引只能用于对等操作,不能用于范围查询

无法利用索引完成排序操作 

  • r-tree

  • full-text

为什么innoDB选择b+树作为存储结构?

  • 相对于二叉树,层数较少,查询效率高
  • 相对B-tree,无论是叶子节点还是非叶子节点,都会保存数据,这样导致一页中存储的键值减少,指针跟着减少,要同样保存大量数据,只能增加树的高度,导致性能降低
  • 相对Hash索引,B+tree支持范围匹配及排序操作

索引分类

主键索引

唯一索引

常规索引

全文索引

聚集索引

  • 有主键,主键索引就是聚集索引,叶子结点挂的数据就是这一行的数据

二级索引

  • 叶子结点挂的数据是对应的id值
  • 回表查询,先从二级索引拿到主键值,再从聚集索引找到对应的值

Mysql Day04_第7张图片

索引语法

create [unique][fulltext] index index_name on tablename(index_col_name);

show index from table_name;

drop index index_name on table_name;

你可能感兴趣的:(mysql,数据库)