Mysql数据库InnoDB及索引相关学习记录

Mysql 存储引擎:InnoDB,MyISAM 等

InnoDB架构:

In-Memory Structure(内存结构) 在MySQL 服务进程内 包括:Adaptive Hash Index(自适应哈希索引),Log buffer(日志缓冲),change buffer(写缓冲),Buffer Pool(缓冲池)

OS cache OS缓存 属于内核态内存

On-Disk Sructure(磁盘结构)在文件系统上。主要包括 日志与表空间

InnoDB中,主键索引是聚集索引, 其他索引是普通索引,普通索引记录的值是 主键。

自适应哈希索引 AHI 系统为了加速自己判断使用哈希索引,像是 “索引的索引”。当然有时候也会误判。可以手动关闭API功能

对应很多单行记录查询,范围查询 , AHI往往是很有效的。

Mysql索引类型有 哈希和B+树,一般来说,哈希索引如 HashMap的 时间复杂度是 O(1) ,二叉树的时间复杂度是 : O(log(n)),对于排序查询,group by,order by,比较等,哈希索引的时间复杂度会退化为 O(n) 。

InnoDB并不能手动设置Hash索引。

数据结构

B树是为了解决数据库搜索而被发明的。

B树特点:

  1、与二叉树相比,是 m叉树 

  2、非叶子节点也存储数据

  3、中序遍历可以获得所有节点

  ps:树的遍历方式,以下图二叉树为例, 前序遍历:左中右 (CBDAFEG), 中序遍历:中左右 (ABCDEFG),后序遍历:右中左  (GEFADBC)。 

  

 

 B+树 是B树的改进版本

  1、非叶子节点不在存储数据

  2、叶子节点之间增加了链表

相对于B树优势: 1、范围查找,叶子节点存储记录适用于大数据量磁盘存储。 2、非叶子节点存储,用于查询加速,适合内存存储。 3、相同情况下,B+树能存储更多索引

 

posted @ 2020-01-14 09:48  张利锋  阅读(119)  评论(0编辑  收藏  举报