参考博客:

https://my.oschina.net/wangzemin/blog/5346534 InnoDB之BufferPool

https://juejin.cn/post/7007421609900245000 InnoDB - 整体架构:内存结构与磁盘结构

https://www.cnblogs.com/detectiveHLH/p/14907405.html 数据页

https://mp.weixin.qq.com/s/D-4m5RZwOjhJpLytiJ5FdA InnoDB 内存结构及其原理

https://www.phpmianshi.com/?id=136 数据页相关概念

1.InnoDB中的缓存区叫innodb_buffer_pool,当读取数据时,就会先从缓存中查看是否数据的页(page)存在,不存在的话去磁盘上检索,查到后缓存到innodb_buffer_pool中。同理,插入、修改、删除也是先操作缓存里数据,之后再以一定频率更新到磁盘上,这个刷盘机制叫做Checkpoint。(脏页是没有写入磁盘的数据页数据)

2.MySQL默认的innodb_buffer_pool的大小是128M,我们可以通过以下命令查看innodb_buffer_pool的参数,执行结果如下图所示:

show variables like 'innodb_buffer_pool%';

3.查看缓存区状态 show global status like '%innodb_buffer_pool%';

4.数据页:默认16KB (InnoDB中管理数据的最小单元)

5.InnoDB内存结构:Buffer Pool、Change Buffer、Adaptive Hash Index和Log Buffer。

6.InnoDB磁盘结构:在磁盘中,InnoDB 将所有数据都逻辑地存放在一个空间中,称为表空间(Tablespace)。表空间由段(Segment)、区(extent)、页(Page)组成。

7.区由连续的页组成,大小固定为1MB,默认页大小为16KB,因此一个区默认存储64个连续的页。

8.行:InnoDB 是面向列(row-oriented)的关系存储引擎,因此数据是按行存储的。每个 Page 最多存放 7992 行记录。InnoDB 会为每个数据行前添加事务 ID 列(TransactionID,占 6 Byte)和回滚指针列(Roll Pointer,占 7 Byte),如果该表没有定义主键,则会选择第一个定义的非空唯一索引作为主键,若没有非空唯一索引则会在 TransactionID 前添加一列主键 ID 列(RowId,占 6 Byte)作为主键列。

MySQL学习(十三)InnoDB的更多相关文章

  1. Mysql学习笔记-InnoDB深度解析

    前言 我们在上一篇博客聊了Mysql的整体架构分布,连接层.核心层.存储引擎层和文件系统层,其中存储引擎层作为Mysql Server中最重要的一部分,为我们sql交互提供了数据基础支持.存储引擎和文 ...

  2. 【mysql学习】InnoDB数据结构

    原来知道有一些索引失效的条件,最近看了看mysql底层数据结构,明白了为什么会失效 ,记录之.众所周知,常用的mysql数据引擎有两种,今天全是以InnoDB为基础开启探索之旅的,另一种有时间再说吧. ...

  3. MySQL学习(十三)

    编码问题 乱码是如何形成的 1 解码时与实际编码不一致 可修复 2 传输过程中,编码不一致,导致字节丢失,不可修复,如把utf8转为GB2312 连接器的特性:连接客户端和服务器,客户端的字符先发给连 ...

  4. 我的MYSQL学习心得(十三) 权限管理

    我的MYSQL学习心得(十三) 权限管理 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) ...

  5. 我的MYSQL学习心得(十三)

    原文:我的MYSQL学习心得(十三) 我的MYSQL学习心得(十三) 我的MYSQL学习心得(一) 我的MYSQL学习心得(二) 我的MYSQL学习心得(三) 我的MYSQL学习心得(四) 我的MYS ...

  6. MySQL学习笔记之二---引擎介绍MyISAM VS InnoDB

    前言 MyISAM是MySQL的默认数据库引擎(5.5版之前),由早期的ISAM(Indexed Sequential Access Method:有索引的顺序访问方法)所改良.虽然性能极佳,但却有一 ...

  7. 我的MYSQL学习心得(一) 简单语法

    我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...

  8. 我的MYSQL学习心得(四) 数据类型

    我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...

  9. 我的MYSQL学习心得(八) 插入 更新 删除

    我的MYSQL学习心得(八) 插入 更新 删除 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得( ...

  10. 我的MYSQL学习心得(九) 索引

    我的MYSQL学习心得(九) 索引 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类 ...

随机推荐

  1. spark项目技术点整理

    spark项目技术点整理 1.性能调优: 1>分配更多的资源:性能调优的王道就是分配和增加更多的资源.写完一个spark作业后第一个要是调节最优的资源配置,能够分配的资源达到你的能力范围的顶端后 ...

  2. Dapper上传图片

    <h2>添加商品</h2> <table class="table table-bordered"> <tr> <td> ...

  3. IOS弹出系统键盘后,页面不恢复

    <script> var u = navigator.userAgent, app = navigator.appVersion var isIOS = !!u.match(/\(i[^; ...

  4. python与c++区别

    1 都是面向对象编程,但是python是脚本语言,无需main函数 2 python不需要引用库,前不要定义类型,后不要: 列表可以用-x,表示倒数第几个,不能用a++ a = [1, 2, 3, 4 ...

  5. java.lang.NoSuchMethodException: com.titan.domain.BigPackage.setEMail(java.lang.String)

    List<Map<String, Object>> list 转 List<Bean>报异常. ... Method method = classType.getM ...

  6. python脚本监控定时任务

    1.linux服务器中输入命令 crontab -l 查看当前系统的所有定时任务 2. 输入命令 crontab -e ,然后按"i"进行编辑(可新增.修改定时任务).具体定时任务 ...

  7. 通过Linux的socket套接字实现客户端与服务器端的通信

    具体案例:使用树莓派ds18b20温度传感器实现温度上报 首先需要获得传感器文件中保存的温度信息: 温度信息通常保存在路径为"/sys/bus/w1/devices/28-xxxxxxxxx ...

  8. Linux_GItlab

    Gitlab实战 Gitlab安装 Gitlab简单使用 配置Jenkins 向 Gitlab 拉取代码 配置gitlab 触发器 Gitlab安装 环境需求: 一台干净的新机器(防止端口冲突) 配置 ...

  9. java-------导出数据csv

    outputStream = new FileOutoutStream(file); outputStreamWriter = new OutputStreamWriter (outputStream ...

  10. NOIP2009普及组

    T3]细胞分裂 [算法]数论 [题解]均分的本质是A整除B,A整除B等价于A的质因数是B的子集. 1.将m1分解质因数,即m1=p1^a1*p2^a2*...*pk^ak 所以M=m1^m2=p1^( ...