当前位置: 首页 > news >正文

MySQL 是怎么存储 NULL 的

一、InnoDB 逻辑存储结构

InnoDB 中的所有数据都被逻辑地存放在一个空间中,这个空间被称之为 “表空间”(tablespace),表空间可以看作 InnoDB 存储引擎逻辑结构的最顶层,其中包含以下几个部分:

  • 段(segment):表空间是由各个段组成的,常见的段有:
    • 数据段(leaf node segment):InnoDB 是索引组织表(index organized)的,数据即索引,索引即数据,因此数据段其实就是索引(B+ 数的叶子结点)
    • 索引段(non-leaf node segment):B+ 树的非叶子节点
    • 回滚段(rollback segment):也就是 undo log 中的数据
  • 区(extent):一个段最多可以申请 4 个区,区由 64 个连续的页组成,每个页大小为 16KB,即每个区的大小为 64 * 16 = 1M
  • 页(page),也称为 “块”(block):页是 InnoDB 磁盘管理的最小单位。每个页中的数据组织形式是 “行(row)”,也就是说数据是按行进行存放的,每个页最多存放 16KB / 2 ~ 200 = 7992 行的记录
    在这里插入图片描述

二、InnoDB 行记录格式

InnoDB 存储引擎提供了 Compact 和 Redundant 两种格式来存放行记录格式,MySQL 5.1 默认保存为 Compact 格式。

可以通过 show table status like ‘table_name’ 来查看当前表使用的行记录格式。

Redundant 是为了兼容 MySQL 5.0 之前的版本来存在的,这里就不详细说了,主要看 Compact 格式,如下所示:
在这里插入图片描述
首先,Compact 行格式的首部是一个非 NULL 变长字段(varchar)的长度列表,并且这个长度列表是按照列的顺序逆序放置的:
举个例子,比如有四个字段 (id, name, age, address),name 和 address 都是变长类型,有两行记录:
在这里插入图片描述

第一行name长度是3(0x03),address长度是11(0xB),
在这里插入图片描述
第二个部分就是 NULL 标识位,用于指示这行数据中是否有 NULL 值,若有的话,则将对应的比特位置为 1。具体来说,每个列对应一个二进制位(bit),二进制位同样按照列的顺序逆序排列。

比如有一行记录 id = 1, name = “admin”, age = NULL,那么这行记录对应的 NULL 标位就是 100(逆序排放,[age, name, id]),然后在高位补 0,最终就是 0000 0100

第三部分是记录头信息(record header),固定占用 5 个字节(40 位),主要就是包含比如该行是否已被删除、页中下一条记录的相对位置等等之类的。

http://www.dtcms.com/a/610678.html

相关文章:

  • 磁共振成像原理(理论)35:快速梯度回波成像 (Fast Gradient-Echo Imaging)
  • 【前传交换机 PTP】FibroLAN Falcon RX
  • Cursor 使用记录:C/C++ 开发者
  • 建设彩票网站一站式网站建设行业
  • fomo3d网站开发app软件开发培训班
  • 动态住宅IP和静态住宅IP哪个更好
  • 营销型网站 策划运营网站免认证域名
  • 网页设计个人网站建设工程交易中心是什么机构
  • Docker 核心命令速查表(精细分类版)
  • leetcode 2536 子矩阵元素加1
  • 如何做企业网站建设怎么清空wordpress媒体库
  • 做网站流程内容美食网站建设总结
  • 面对网络攻击告警 IP地址如何实现自动化封禁
  • 专栏介绍:AMD KFD BO设计深度剖析——解锁GPU存储核心技术
  • Kimi K2 Thinking:兼顾Agent和推理的六边形战士
  • 打字游戏——测一测你的反应速度
  • SpringBoot17-addresourcehandler()方法
  • 网站模版建设教程贵阳网站建设哪家公司好
  • 设计师配色网站中国建设部官方网站绿色建筑
  • 11.14作业
  • 建设银行苏州网站网站推广服务具体内容包括哪些
  • 第四章深度解析:智能体经典范式实战指南——从ReAct到Reflection的全流程拆解
  • 购物网站后台模板南京的网站建设公司哪家好
  • 构建手写数字识别Web应用:前后端完整解决方案
  • 网站制作过程简介网络规划设计师如何复习
  • 从 Chat Completions 到 Responses:不仅仅是更改了接口这么简单
  • (ICLR 2019)APPNP传播用 PageRank,不用神经网络!
  • 解决 Mac 迁移数据后用户目录无权限问题
  • 长春网站制作价格网站空间要备案吗
  • C#1114 枚举