mysql内存体系结构_Innodb存储引擎的体系架构之内存
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存储引擎的体系架构之内存相关推荐
- mysql内存机制_浅析Oracle 的体系架构及内存分配机制
Oracle Server :Oracle服务器,一般可以看作是一个摸得着看的见的机器,我们可以称之为服务器.也可以看作是一套运行在服务器上 首先讲 Oracle 包含 的 三个部分: 1: Orac ...
- oracle linux内存推荐分配,浅析Oracle 的体系架构及内存分配机制
接着讲述Oracle SGA 的内存分配 1: SGA基本的介绍 a. Shared Pool共享池 b. Dataabse Buffer Cache (数据块缓存) c. Redo Log Buff ...
- MySQL再叙(体系结构、存储引擎、索引、SQL执行过程)
文章目录 体系结构 存储引擎 SQL执行过程 select的执行过程 update的执行过程 索引 小结 提起MySQL,大家一定不陌生,MySQL是最流行的关系型数据库管理系统,MySQL的历史可以 ...
- tablestore列式存储原理_10分钟搞透:技术人必会的MySQL体系结构与存储引擎!
MySQL是目前使用最广的开源数据库,不管从装机量.使用人群.专职人员.社区发展,还是基于MySQL的其他分支,都是当之无愧的No.1. 本文将从以下4个方面,带你搞透MySQL体系结构与存储引擎. ...
- mysql 存储引擎接口_MySQL体系结构和存储引擎
数据库与传统文件系统最大的区别在于数据库是支持事务的 一.定义数据库与实例 1.数据库: 物理操作系统的文件或者其他文件类型的集合,依照某种数据模型组织起来并存储于二级存储器中的数据集合. 2.实例: ...
- MySQL技术内幕读书笔记(一)——Mysql体系结构和存储引擎
目录 MySQL体系结构和存储引擎 定义数据库和实例 MYSQL体系结构 MYSQL存储引擎 MySQL体系结构和存储引擎 定义数据库和实例 数据库:物理操作系统文件或者其他形式文件类型的结合.在MY ...
- mysql体系结构和存储引擎
转自: mysql技术内幕:innodb存储引擎(非常棒的一本书) [1]mysql体系结构和存储引擎 [1.2]mysql体系结构 1)mysql数据库实例在系统上的表现就是一个进程: 2)数据库与 ...
- 数据库学习笔记—MySQL技术nei幕—第一章—MySQL体系结构和存储引擎
数据库和实例 数据库和实例很容易混淆,如果要更加深入地理解MySQL,将这两个概念区分开来是必不可少的. 数据库是物理操作系统文件或其他形式文件类型的集合.就比如在MySQL数据库中,数据库文件可以是 ...
- mysql sga_MySQL王者晋级之路(一)安装、体系结构和存储引擎
<MySQL王者晋级之路>张甦,电子工业出版社,2018.3 基于MySQL5.6和MySQL5.7 MySQL简介与主流分支版本 MySQL简介 MySQL AB -> Sun - ...
最新文章
- 总结:Apache架构师30条架构原则
- 【笔试面试考试】C++基础知识点[转]
- LNSYOJ201小胖的奇偶【并查集+离散化】【做题报告】
- vue动态跟新layui的select_vue+layui实现select动态加载后台数据的例子
- 长寿的人会有的8个健康理念
- 北师大c语言2019在线作业,华东石油《C语言》2019年春季学期在线作业(二)辅导答案...
- 电子计算机专业211大学,这所高校不是211,但“计算机”实力远超985,被称“IT人才摇篮”...
- c语言物联网服务器,物联网卡服务器(物联网应用层服务器端集)
- React开发chrome插件系列教程之插件开发环境搭建
- 用Python通过摄像头进行视频录制
- drupal mysql hash密码_drupal7 密码重置
- python 图片转换为ico图标
- 2016--聊聊读书
- 编写程序实现以下功能:计算1~n之间的素数并输出
- 解决nvcc显示不是内部或外部命令的问题
- htmlUnit的读取js渲染的页面
- kaos linux 包管理,KaOS v2018.12版正式发布附下载-独立的 Linux 发行版
- jdk版本与Tomcat适配问题
- ae合成设置快捷键_AE怎样用批处理加倍渲染速度,提高CPU利用率?
- Proxy Switchysharp配置
热门文章
- 何时查询2021高考成绩长春市,2020年吉林长春成人高考成绩查询入口(已开通)...
- ajax c 提交form,使用ajax提交form表单,包括ajax文件上传
- ewomail 内部通讯_教你搭建自己的邮件服务器-Ubuntu 18.04下通过Docker使用EwoMail实现...
- (pwn) C语言 write函数且使用write函数泄露 libc版本
- Python函数16道入门练习题
- html5实现贪吃蛇,分享一个用html5实现的贪吃蛇特效代码
- ios 设置按钮不可见_iOS的五大设计原则:统一化和适应化原则
- oracle的高水位和低水位实验,Oracle 高水位问题
- python matplotlib.pyplot plt.ioff()函数(关闭交互模式用于阻塞程序,不让图片关闭)
- Intel Realsense D435 Realsense View 错误 RT IC2 Config error