1、InnoDB
-
索引分为聚簇索引与二级索引
-
聚簇索引:主键值作为索引数据,叶子节点还包含了所有字段数据,索引和数据是存储在一起的
-
二级索引:除主键外的其它字段建立的索引称为二级索引。被索引的字段值作为索引数据,叶子节点还包含了主键值
-
-
支持事务
-
通过 undo log 支持事务回滚、当前读(多版本查询)
-
通过 redo log 实现持久性
-
通过两阶段提交实现一致性
-
通过当前读、锁实现隔离性
-
-
支持行锁、间隙锁
-
支持外键
InnoDB 索引特点
聚簇索引:主键值作为索引数据,叶子节点还包含了所有字段数据,索引和数据是存储在一起的
-
主键即 7369、7499、7521 等
二级索引:除主键外的其它字段建立的索引称为二级索引。被索引的字段值作为索引数据,叶子节点还包含了主键值
-
上图中 800、950、1100 这些是工资字段的值,根据它们建立了二级索引
-
上图中,如果执行查询
select empno, ename, sal from emp where sal = 800
,这时候可以利用二级索引定位到 800 这个工资,同时还能知道主键值 7369 -
但 select 字句中还出现了 ename 字段,在二级索引中不存在,因此需要根据主键值 7369 查询聚簇索引来获取 ename 的信息,这个过程俗称回表
2、MyISAM
-
索引只有一种
-
被索引字段值作为索引数据,叶子节点还包含了该记录数据页地址,数据和索引是分开存储的
-
-
不支持事务,没有 undo log 和 redo log
-
仅支持表锁
-
不支持外键
-
会保存表的总行数
MyISAM 索引特点
被索引字段值作为索引数据,叶子节点还包含了该记录数据页地址,数据和索引是分开存储的