Inndo中缓冲池存在的主要目的是,减少数据库与磁盘的交互。进程通过内存读写数据的速度远远快于磁盘。

Innodb内存结构主要由两部分组成redo_log_buffer和缓冲池,redo_log_buffer作用以后在事务的持久性部分进行展开,今天主要讲缓冲池。

缓冲池

缓冲池的大小会直接影响Innodb数据库的性能,一般生产级别的mysql服务器都会将缓冲池设置为操作系统总内存的3/4,缓冲池主要由四部分组成:

数据页

索引页

change buffer

自适应hash索引

数据页

数据页就是缓存真实数据的页,在innodb中数据页是主键所在聚集索引构成的B+Tree数据结构,所以这个数据页既包含索引又包含数据。

索引页

索引页就是缓存数据索引的页,这里的索引页代表的是二级索引(非聚集索引)构成的B+Tree数据结构,这个索引包含索引的数据以及数据对一个的主键id

Change Buffer

通过词义就可以知道Buffer是缓冲的意思,一般和Buffer有关的都在内存中。所以Change Buffer在缓冲池扮演的角色就是缓冲不在缓冲池数据的更新(Insert、Update、Delete)。

为什么需要Change Buffer:

如果修改的数据在缓冲池中,无论是查询和更新都不需要产生随机IO.

但是如果修改的数据不在缓冲池中,那么就需要将数据读取到缓存池中然后再进行更新,这样就会产生随机IO

Change Buffer的作用就是,不在缓冲池的数据不直接读取磁盘数据,而是将修改的数据保存在Change Buffer中,Master Thread定期同步脏页,或者等到真正查询的时候再产生磁盘IO

Change Buffer默认占用Innodb_buffer_pool1/4的容量,最大可以设置为1/2,通过innodb_change_buffer_max_size进行设置。

这里有几个问题:

Change Buffer如何保证持久性

Change Buffer也会将数据写入到redo log中,通过redo log保证数据的可靠性.

Change Buffer适用的索引类型

仅适用于非唯一索引,因为唯一索引需要有唯一性验证,如果需要唯一性验证就无法避免从磁盘中读取数据,所以仅适用于非唯一索引。

Change Buffer适用的场景

非唯一性索引多

写多读少

写完就读的场景叫少的情况

自适应hash索引

Innodb本身不支持用户自己设定索引为hash索引,但是会根据条件生成自适应hash索引

因为b+tree可以有效地支持范围查询,但是hash索引遇到范围查询因为本身无序的特征就无能为力了

Innodb默认开启自适应hash索引,当数据访问次数超过总行数的1/16后添加到hash索引中

hash索引的key是索引的前缀,如字段的前缀,value是索引锁在页的位置。

通过上图可以明显看的出来,hash索引查询的层数更少一些。

通过参数innodb_adaptive_hash_index来设置参数,默认为on

名称自适应哈希索引适合使用场景适合使用 = 和 IN 操作符的等值查询

不合适场景不适合使用 like 和 % 的范围查询

优点提高了Innodb的内存使用率和一些情况下二级索引的查询效率

缺点占用Innodb的内存缓存

引用

mysql内存体系结构_Innodb存储引擎的体系架构之内存相关推荐

  1. mysql内存机制_浅析Oracle 的体系架构及内存分配机制

    Oracle Server :Oracle服务器,一般可以看作是一个摸得着看的见的机器,我们可以称之为服务器.也可以看作是一套运行在服务器上 首先讲 Oracle 包含 的 三个部分: 1: Orac ...

  2. oracle linux内存推荐分配,浅析Oracle 的体系架构及内存分配机制

    接着讲述Oracle SGA 的内存分配 1: SGA基本的介绍 a. Shared Pool共享池 b. Dataabse Buffer Cache (数据块缓存) c. Redo Log Buff ...

  3. MySQL再叙(体系结构、存储引擎、索引、SQL执行过程)

    文章目录 体系结构 存储引擎 SQL执行过程 select的执行过程 update的执行过程 索引 小结 提起MySQL,大家一定不陌生,MySQL是最流行的关系型数据库管理系统,MySQL的历史可以 ...

  4. tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!

    MySQL是目前使用最广的开源数据库,不管从装机量.使用人群.专职人员.社区发展,还是基于MySQL的其他分支,都是当之无愧的No.1. 本文将从以下4个方面,带你搞透MySQL体系结构与存储引擎. ...

  5. mysql 存储引擎接口_MySQL体系结构和存储引擎

    数据库与传统文件系统最大的区别在于数据库是支持事务的 一.定义数据库与实例 1.数据库: 物理操作系统的文件或者其他文件类型的集合,依照某种数据模型组织起来并存储于二级存储器中的数据集合. 2.实例: ...

  6. MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎

    目录 MySQL体系结构和存储引擎 定义数据库和实例 MYSQL体系结构 MYSQL存储引擎 MySQL体系结构和存储引擎 定义数据库和实例 数据库:物理操作系统文件或者其他形式文件类型的结合.在MY ...

  7. mysql体系结构和存储引擎

    转自: mysql技术内幕:innodb存储引擎(非常棒的一本书) [1]mysql体系结构和存储引擎 [1.2]mysql体系结构 1)mysql数据库实例在系统上的表现就是一个进程: 2)数据库与 ...

  8. 数据库学习笔记—MySQL技术nei幕—第一章—MySQL体系结构和存储引擎

    数据库和实例 数据库和实例很容易混淆,如果要更加深入地理解MySQL,将这两个概念区分开来是必不可少的. 数据库是物理操作系统文件或其他形式文件类型的集合.就比如在MySQL数据库中,数据库文件可以是 ...

  9. mysql sga_MySQL王者晋级之路(一)安装、体系结构和存储引擎

    <MySQL王者晋级之路>张甦,电子工业出版社,2018.3 基于MySQL5.6和MySQL5.7 MySQL简介与主流分支版本 MySQL简介 MySQL AB -> Sun - ...

最新文章

  1. 总结:Apache架构师30条架构原则
  2. 【笔试面试考试】C++基础知识点[转]
  3. LNSYOJ201小胖的奇偶【并查集+离散化】【做题报告】
  4. vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子
  5. 长寿的人会有的8个健康理念
  6. 北师大c语言2019在线作业,华东石油《C语言》2019年春季学期在线作业(二)辅导答案...
  7. 电子计算机专业211大学,这所高校不是211,但“计算机”实力远超985,被称“IT人才摇篮”...
  8. c语言物联网服务器,物联网卡服务器(物联网应用层服务器端集)
  9. React开发chrome插件系列教程之插件开发环境搭建
  10. 用Python通过摄像头进行视频录制
  11. drupal mysql hash密码_drupal7 密码重置
  12. python 图片转换为ico图标
  13. 2016--聊聊读书
  14. 编写程序实现以下功能:计算1~n之间的素数并输出
  15. 解决nvcc显示不是内部或外部命令的问题
  16. htmlUnit的读取js渲染的页面
  17. kaos linux 包管理,KaOS v2018.12版正式发布附下载-独立的 Linux 发行版
  18. jdk版本与Tomcat适配问题
  19. ae合成设置快捷键_AE怎样用批处理加倍渲染速度,提高CPU利用率?
  20. Proxy Switchysharp配置

热门文章

  1. 何时查询2021高考成绩长春市,2020年吉林长春成人高考成绩查询入口(已开通)...
  2. ajax c 提交form,使用ajax提交form表单,包括ajax文件上传
  3. ewomail 内部通讯_教你搭建自己的邮件服务器-Ubuntu 18.04下通过Docker使用EwoMail实现...
  4. (pwn) C语言 write函数且使用write函数泄露 libc版本
  5. Python函数16道入门练习题
  6. html5实现贪吃蛇,分享一个用html5实现的贪吃蛇特效代码
  7. ios 设置按钮不可见_iOS的五大设计原则:统一化和适应化原则
  8. oracle的高水位和低水位实验,Oracle 高水位问题
  9. python matplotlib.pyplot plt.ioff()函数(关闭交互模式用于阻塞程序,不让图片关闭)
  10. Intel Realsense D435 Realsense View 错误 RT IC2 Config error