InnoDB(2)NULL值列表--mysql从入门到精通(七)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: InnoDB(2)NULL值列表--mysql从入门到精通(七)

上篇文章介绍了InnoDB的compact列类型,存储数据分为真实数据,和额外信息,而额外信息分为变长字段长度列表,null值列表,记录头信息,而变长字段长度列表是要记录varchar,text等长文本,char这种则不存储,当数据为null也不存储,ascii的字节长度为1,乘以varchar(m)的最长字符创长度,1*M若小于255,则用一个字节存储字段长度,若大于255,当真实数据长度小于127,则一个字节存储,大于则两个字节存储最长字段长度。

InnoDB(1)变长字段长度列表--mysql从入门到精通(六)


NULL值列表


Compact行格式的null并不是存储在真实数据里,为了提高效率,这些null值统一存储在变长字段长度列表的后面null列表里。

1、首先是看看有哪些null字段,比如被not null修饰,都是不需要存储到null值列表的。

2、如果表没有可以存储null的字段,则null值列表也不会存在,当前列表存储数据的时候,也是和变长字段长度列表一样,按逆序排列。

因为compact_tb表中有三个字段可以存储null,c1,c3,c4,因为逆序排列,所以存储进去就是c4,c3,c1。

Mysql规定null值列必须用整个字节位表示,一个字节有 8个字节为,因为表里有三个可以为null的字段,所以剩下五个直接补0,存储的效果就是00000c4c3c1。如果有9个可以为null的字段,则需要两个字节来表示。带入表中我们可以看到,第一行三个字段都有数据,所以为00000000转为十六进制就是0x00。第二行有c3和c4都为null,所以存储为00000110,转为十六进制就是0x06。

第一行存储的为:010304,00

第二行存储的为:0304,06


记录头信息


除了变长字段长度列表和null值列表外,额外信息还有一个记录头信息。他和前面两个不同,都是由不同的情况,则用一个节或者两个节存储数据,记录头信息则是规定的五个节存储数据,五个节也就是40个二进制位,不同的位代表不同的意思。

预留位1:1bit,没有使用。

预留位2:1bit,没有使用。

Delete_mask:1bit,标记该记录是否被删除。

Min_rec_mask:1bit,B+树的每层非子叶节点中的最小记录都会添加该标记

N_owned:4bit,表示当前记录拥有的记录数。

Heap_no:13bit,表示当前记录在记录堆的位子信息。

Recode_type:3bit,表示当前记录类型,0表示普通记录,1表示B+树非子叶节点记录,2表示最小记录,3表示最大记录。

Next_record:16bit,表示下一条记录相对位置。

后面文章给大家一一详细介绍这些位子。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
1天前
|
存储 SQL 关系型数据库
【MySQL技术内幕】6.3-InnoDB中的锁
【MySQL技术内幕】6.3-InnoDB中的锁
135 57
|
1天前
|
存储 算法 关系型数据库
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
【MySQL技术内幕】5.7- InnoDB存储引擎中的哈希算法
11 1
|
1天前
|
存储 关系型数据库 MySQL
【MySQL技术内幕】5.1-InnoDB存储引擎索引概述
【MySQL技术内幕】5.1-InnoDB存储引擎索引概述
6 0
|
1天前
|
存储 算法 关系型数据库
【MySQL技术内幕】4.4-InnoDB数据页结构
【MySQL技术内幕】4.4-InnoDB数据页结构
8 1
|
1天前
|
存储 SQL 关系型数据库
【MySQL技术内幕】4.2-InnoDB行记录格式
【MySQL技术内幕】4.2-InnoDB行记录格式
7 0
|
1天前
|
存储 关系型数据库 MySQL
【MySQL技术内幕】4.2-InnoDB逻辑存储结构
【MySQL技术内幕】4.2-InnoDB逻辑存储结构
7 0
|
1天前
|
存储 缓存 关系型数据库
【MySQL技术内幕】3.6-InnoDB存储引擎文件
【MySQL技术内幕】3.6-InnoDB存储引擎文件
9 0
|
1天前
|
SQL 存储 关系型数据库
MySQL 示例数据库大全
我们练习 SQL 时,总会自己创造一些测试数据或者网上找些案例来学习,其实 MySQL 官方提供了好几个示例数据库,在 MySQL 的学习、开发和实践中具有非常重要的作用,能够帮助初学者更好地理解和应用 MySQL 的各种功能和特性,特别是练习 SQL 的好帮手。
20 0
|
1天前
|
SQL 关系型数据库 MySQL
MYSQL————DDL方法使用(包含在数据库,以及具体数据库表格的一些操纵)
MYSQL————DDL方法使用(包含在数据库,以及具体数据库表格的一些操纵)
|
2天前
|
SQL 关系型数据库 MySQL
MySQL中如何查看所有数据库的名称?
【6月更文挑战第12天】MySQL中如何查看所有数据库的名称?
13 3