MySQL中InnoDB特性

本文详细介绍了InnoDB存储引擎的内部架构,包括内存架构和硬盘架构。InnoDB的关键特性包括插入缓冲(InsertBuffer)、两次写(DoubleWrite)、自适应哈希索引(AdaptiveHashIndex)、异步IO和刷新临近页。插入缓冲适用于非唯一辅助索引的插入操作,可优化写入性能。两次写是为了确保数据页的可靠性。自适应哈希索引能根据查询热点动态创建哈希索引,提高查询效率。异步IO允许并发发送多个IO请求,提高系统吞吐。刷新临近页则在刷新脏页时一并处理同一区的其他脏页,减少IO次数。

InnoDB架构

介绍InnoDB特性,就需要先了解下它的内部实现。InnoDB的架构如图;

InnoDB architecture diagram showing in-memory and on-disk structures.

图片来源Mysql官网

这里分内存架构、硬盘架构划分。

 

 

InnoDB关键特性

InnoDB是Mysql最常用的存储引擎。这里简单说下它的一些特性。

主要有:插入缓冲、两次写、自适应哈希、异步IO、刷新临近页。

 

插入缓冲

即我们所说的Insert Buffer,xxx

使用条件同时满足:

  • 索引是辅助索引

  • 索引不是唯一索引

可以在 show status 中查看,seg size * 16KB 代表Insert Buffer大小。

 

两次写

即Double Write,主要是为了保证数据页的可靠性。

 

自适应哈希

Adaptive Hash Index,我们知道InnoDB是不支持用户自定义哈希索引的,但是InnoDB在内部自优化的时候会探测热点查询,并构建一个哈希索引。

 

异步IO

简单来说,用户在发出一个IO请求后立即再发出另一个IO请求,当全部IO请求发送完毕后,等待所有IO操作的完成。要使用异步IO需要底层平台支持。因此这里就有两个可能:1、比如 mac上好像不支持AIO,因此使用的是InnoDB模拟的异步IO;2、直接使用操作系统的异步IO。

刷新邻接页

Flush Neighbor Page

当刷新一个脏页时,InnoDB存储引擎会检测该页所在区(extent)的所有页,如果是脏页,那么一起进行刷新。

好处:通过AIO将多个IO写入操作合并为一个IO操作。

 

 

 

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值