| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> innodb 存储引擎之:记录的数据结构,数据页的数据结构 -> 正文阅读 |
|
[数据结构与算法]innodb 存储引擎之:记录的数据结构,数据页的数据结构 |
目录 innodb 行格式innodb 有4中不同类型的行格式,分别是
创建表时,可以执行表的行格式, create table t (''''''') ROW_FORMAT = COMPACT COMPACT 行格式记录的额外信息变长字段长度列表所有变长字段的真实数据占用 字节数都存放在记录的开头位置,从而形成一个变长字段长度列表,各变长字段的真实数据占用的字节数按照列的顺序逆序存放(再次强调一遍,是逆序存放) NULL值列表一条记录中的某些列可能存储 NULL 值,所以把一条记录中值为 NULL 的列统一管理起来,存储到 “NULL 值列表”,如果表中没有允许存储 NULL 的列,则 NULL 值列表也就不存在了 记录的头信息记录的头信息占用空间为 5 字节,也就是 40个二进制位 记录头信息中各二进制位代表的意思 重点需要知道,deleteed_flag,n_owned,record_type,next_record 各个字段的含义 记录的真实数据记录的真实数据除了保存了,表的一条记录的各个列的数据外,MySQL 会为每个记录默认地添加一些列(也称为隐藏列),见下图 innodb数据页结构示意图innodb 读取数据的方式是以“页”为单位,作为磁盘和内存之间交互的基本单位,innodb 默认的页大小为 16KB。 innodb_page_size 控制“页”的大小,在mysql运行的过程中是无法修改此配置的,也就是说该配置是不能动态修改的,如果要让修改后的值生效,只能重启。 各部分解释 在一开始生成页的时候,其实并没有 User Records 部分,每当插入一条记录时都会从 Free Space 部分(也就是尚未使用的存储空间〉申请一个记录大小的空间,并将这个空间划分到 User Records 部分。当 Free Space 部分的空间全部被 User Records 部分替代掉之后,也就意味着这个页使用完了,此时如果还有新的记录插入,就需要去申请新的页了 。这个过程如下图所示 File Header占股东的38字节,各个字节的具体用途 重点需要知道 图中标黄的部分 Page Header(页头部)固定占用56字节,各个字节的具体用途 重点需要知道图中标黄的部分 lnfimum + Supremum两个虚拟的伪记录 ,分别表示页中的最小记录和最大记录,占固定的 26 字节 User Records真正存储记录的地方,大小不固定 Free Space页中尚未使用的部分,大小不固定 Page Directory(页目录)大小不固定,插入的记录越多,“槽”就越多,占用空间就越多 什么是“槽” 为了提高“数据页”内查询数据的效率,innodb 设计了 “槽” 介绍“槽”之前先介绍,“组”
“槽”是怎么来的
File Trailer保存页的校验和 一个数据页的示意图在一个数据页中查找指定主键值的记录时,过程分为两步
在 B+TREE 同一层的数据页与数据页之间是双向链表,数据页内记录与记录之间是单向链表 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 22:44:00- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |