参考博客:

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. Mysql Dao

    1 package dao; 2 3 import java.sql.Connection; 4 import java.sql.PreparedStatement; 5 import java.sq ...

  2. SQL-关联

    关联的本质:从一张表依次取一条数据和另一张表每一条数据进行匹配 内关联 inner join (inner可省略) -- 只显示关联的上的数据外关联有三种左外 left join -- 主表数据不丢失 ...

  3. 杭电OJ--1003题C++实现

    #include<iostream>using namespace std;int a[100000];void solve(int k,int n,int t);int main(){  ...

  4. 关于css选择器的一点点记录

    <!-- 选择器:         #id..class.标签.>子代. 后代.+紧跟一个.~紧跟所有.:(效果)伪类 -->         <!-- 效果选择器常用属性: ...

  5. 开发Unity3D移动端输入插件 UGUI Touch Input Component

    UGUI Touch Input Component 为了在移动设备上操控角色,本人便开发了UGUI Touch Input Component输入类插件. 特点 本插件中总共包含三种组件:the v ...

  6. 显式等待(一)WebDriverWait类、until()方法

    转自: https://blog.csdn.net/zyooooxie/article/details/84422924

  7. js中宏任务,微任务,异步,同步,执行的顺序

     [微任务]包括:Promise ,    process.nextTick() *node.js里面的  [宏任务]包括:整体代码script,  setTimeout    setInterval ...

  8. ffmpeg编译错误/libfdk-aacenc.c: In function 'aac_encode_init'

    ffmpeg编译错误/libfdk-aacenc.c: In function 'aac_encode_init' 需要手动打一个补丁 https://git.libav.org/?p=libav.g ...

  9. java中数组操作,正序,逆序,子数组、自定义排序

    // 数组定义,初始化 int[] array = new int[]{1, 2, 2, 1}; int[] dest = new int[10]; Integer[] soul = new Inte ...

  10. Sky Full of Stars

    题目链接: luogu cf 题目大意: 给定一个 \(n \times n\) 的矩形,在里面填充三种颜色,求使得至少一行或至少一列同色的方案数. 解法 容斥 我们不去考虑反演,直接开始容斥,我们不 ...