InnoDB内存结构详解 深入解析InnoDB的内存结构(2)
InnoDB内存结构详解
change buffer工作原理如下:
- 当更改的页存在于buffer pool的lru list,则直接在缓冲池中修改这个页,这个页会变成脏页,链入到flush list中,但并不马上刷盘;此时不涉及change buffer操作。
- 当更改的页不存在于buffer pool的lru list,就要先从磁盘读取要修改的数据页到buffer pool后再修改(数据不会在磁盘中直接更改)。但为了避免修改操作引发的磁盘读IO,系统会将DML操作记录到change buffer中,并不马上刷盘。等下次对这些修改的页进行查询时,由于lru list不存在该页,会从磁盘读取(磁盘页是更改前的数据),为了避免读到脏数据,该磁盘页会和change buffer中的更改合并后才链入到lru list。如果未来一段时间都不会查询到这个修改了的页,也会有insert buffer thread定时将change buffer的数据合并到磁盘页中。
- 如果做出的更改是对唯一键索引的值的修改,InnoDB要做唯一性校验,必须查询磁盘,再在lru list上的页修改,不会在change buffer中操作。
综上:change buffer适合写多读少的场景,并且满足非唯一索引。
Adaptive Hash Index
Adaptive Hash Index(AHI,自适应哈希索引),是指InnoDB存储引擎通过监控表上索引页的查找模式,自动根据查找模式对“热点数据”来创建哈希索引。因为对B+树索引的访问需要依次访问根节点>中间节点>叶子节点,而对哈希索引的访问仅需要一次HASH计算即可定位到目标位置。一些资料统计,启用AHI后,读取和写入速度可以提高2倍,辅助索引的连接操作性能可以提高5倍。
通过下列指令可以查询到数据库的相关设置:
show variables like '%hash_index';(DMS设置的是OFF)
AHI使用条件:
- 索引被访问了17次(BTR_SEARCH_HASH_ANALYSIS)
- 索引中的某个页已经被访问了至少100次(BTR_SEARCH_BUILD_LIMIT)
- 数据页被相同模式(相同的查询条件)访问N次(N=页中记录*1/16)
AHI使用buffer pool中的数据页进行构造,仅保存在内存中,且仅对热点数据进行处理,因此构造AHI速度极快。
log buffer
log buffer就是redolog buffer的简称,是存储要写入磁盘上的redolog的内存区域。
log buffer由变量innodb_log_buffer_size定义大小,默认为16MB(DMS中设置了8GB)。log buffer的内容会根据设置刷盘,足够大的log buffer可以使得大事务完全依赖缓存运行,而不需要在事务提交前将redolog数据写入磁盘。因此,如果有更新、插入或删除许多行的事务,增加log buffer的大小可以节省磁盘I/O。
log buffer是顺序写的,刷盘也是顺序的,所以当某个脏页对应的redolog从log buffer刷盘时,会保证将在其之前产生的redolog也刷盘,详情见下文redolog的介绍。
以上就是IT袋网带来的InnoDB内存结构详解的相关内容,希望对您有所帮助!
相关阅读
-
matepad11.11处理器 华为matepad11处理器型号
一篇很详细的教程是关于华为matepad11处理器型号IT技巧方面的经验,华为matepad11搭载7nm的高通骁龙865的处理器,正面是一块10.95英寸的无开孔屏幕,支持120Hz高刷新率。
-
惠普2700打印机连接wifi教程 惠普2700无线打印机怎么连接wifi
为大家介绍惠普2700无线打印机怎么连接wifi的内容,惠普2700无线打印机连接wifi共需六个步骤,在打印机的wifi地址界面即可操作,具体操作步骤如下:
-
打印机无法打印是怎么回事 关于打印机和电脑连接打印方法
为大家介绍打印机无法打印是怎么回事和关于打印机和电脑连接打印方法的介绍,一起来了解了解吧。 有时候会遇到打印机无法打印的情况,打印机无法打印大多是由于打印机使用、安装、设
-
摄像头进灰是不是拆过机 前置摄像头进灰尘变模糊怎么办
下面为网友们详细介绍前置摄像头进灰尘变模糊怎么办和摄像头进灰是不是拆过机的相关话题,请看下面详细的介绍。 手机成为现代人不可或缺的日常用品,而其中的摄像头也是手机最常用的


