• Compact行格式


    变长字段长度列表

    NULL标志位

    记录头信息

    列1数据

    列2数据

    ……

    记录的额外信息:

    • 这部分信息是服务器为了描述这条记录而不得不额外添加的一些信息,这些额外信息有:变长字段长度列表、null值列表、记录头信息。

    (1)变长字段长度列表

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

    注意:

    • Char是一种固定长度的类型,varchar则是一种可变长度的类型。
    • Varchar(M),M代表最大能存多少个字符,MySQL5.0.4之前是字节,之后是字符

    (2)Null值列表

    Compact行格式会把可以为null的列统一管理起来,存一个标记位在null值列表中,如果表中没有允许存储null的列,则null值列表也不存在了。

    • 二进制位的值为1时,代表该列的值为null;
    • 二进制位的值为0时,代表该列的值不是null;

    (3)记录头信息

    除了变长字段长度列表,null值以外,还有一个用于描述记录的记录头信息,它是由固定的5个字节组成。5个字节是40个二进制位,不同的位代表不同的意思:

    名称

    大小(单位:bit)

    描述

    预留位1

    1

    没有使用

    预留位2

    1

    没有使用

    Delete_mark

    1

    标记该记录是否被删除

    Min_rec_mark

    1

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

    N_owned

    4

    表示当前记录拥有的记录数

    Heap_no

    13

    表示当前记录在记录堆的位置信息

    Record_type

    3

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

    Next_record

    16

    表示下一条记录的相对位置

    欢迎批评指正,提出问题,谢谢!
  • 相关阅读:
    实用技巧——让你的网站变成响应式的3个简单步骤
    C#网络编程初步之TCP
    C#调用WebService实例和开发
    获取GridView中RowCommand的当前索引行
    创建Spring项目 IOException parsing XML document from class path resource [ApplicationContext.xml];
    java8的日期处理
    使用IDEA创建动态web项目
    连接数据库出现The server time zone value '�й���׼ʱ��' is unrecogni的解决方案
    Spring Boot RabbitMQ 应用场景--转载
    SpringBoot可视化监控
  • 原文地址:https://www.cnblogs.com/xxeleanor/p/14969267.html
Copyright © 2020-2023  润新知