区块链技术博客
www.b2bchain.cn

2020-11-15 MySQL底层原理分析

这篇文章主要介绍了2020-11-15 MySQL底层原理分析的讲解,通过具体代码实例进行20363 讲解,并且分析了2020-11-15 MySQL底层原理分析的详细步骤与相关技巧,需要的朋友可以参考下https://www.b2bchain.cn/?p=20363

本文实例讲述了2、树莓派设置连接WiFi,开启VNC等等的讲解。分享给大家供大家参考文章查询地址https://www.b2bchain.cn/7039.html。具体如下:

MySQL底层原理分析

  • InnoDB行格式、数据页格式
    • InnoDB行格式
      • Compact 行格式
        • 变长字段长度列表
        • NULL值列表
        • 记录头信息
        • 三个隐藏列
    • InnoDB页格式

InnoDB行格式、数据页格式

InnoDB行格式

一行记录可以以不同的格式存储在InnoDB中,行格式分别是Compact、Redundant、Dynamic和Compressed格式。 

Compact 行格式

2020-11-15 MySQL底层原理分析
记录的额外信息,这部分信息是服务器为了描述这条记录不得不额外添加的一些信息,这些额外信息分三类,分别是:

  1. 变长字段长度列表
  2. NULL值列表
  3. 记录头信息

变长字段长度列表

MySQL支持一些变长的数据类型,比如varchar(M)、varbinary(M)、text等类型,这些数据类型存储多少字节的 数据不是固定的,所以我们在存储真实数据的时候需要顺便把这些数据占用的字节数据也存起来。在Compact行格式 中,把所 有变长字段的真实数据占用的字节长度都存放在记录的开头部分,从而形成一个变长字段长度列表。 

NULL值列表

Compact行格式会把可以为NULL的列统一管理起来,存在一个标记为NULL值列表中,如果表中没有允许存储NULL  的列,则NULL值列表也不存在了。 
  1. 二进制位的值为1时,代表该列的值为NULL。
  2. 二进制位的值为0是,代表该列的值不为NULL。

假设存储的不为NULL的数据为1、1、1,存储的NULL数据为1、null、1。NULL值列表会以key:value形式记录null字段,真实存储的NULL数据为11,不为NULL数据为111。

记录头信息

除了变长值端列表、NULL值列表外,还有一个用于描述记录的记录头信息,它是固定的,5个字节组成。 

2020-11-15 MySQL底层原理分析

三个隐藏列

2020-11-15 MySQL底层原理分析

InnoDB页格式

InnoDB默认页数据存储大小16kb

File Header
Page Header
Infimun+Supermum Records
User Records
Free Space
Page Directory
File Trailer

名称———————————中文名—————————–占用空间
File Header————————文件头部————————–38字节
Page Header———————-页面头部————————–56字节
Infimun+Supermum Records-最小最大记录——————–26字节
User Records———————用户记录————————–不确定
Free Space————————空闲记录————————–不确定
Page Directory——————–页面目录————————–不确定
File Trailer————————–文件尾部————————–8字节

MySQL,在新建一张表的时候,直接创建起始页,如果第一页数据溢出,会复制第一页的数据,再新建一张目录页。InnoDB存储数据格式如下图: 

2020-11-15 MySQL底层原理分析

本文转自互联网,侵权联系删除2020-11-15 MySQL底层原理分析

赞(0) 打赏
部分文章转自网络,侵权联系删除b2bchain区块链学习技术社区 » 2020-11-15 MySQL底层原理分析
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

b2b链

联系我们联系我们