ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

11.innodb的行格式

2022-02-06 19:00:59  阅读:176  来源: 互联网

标签:11 段长度 字节数 记录 列表 innodb 变长 格式


1.前言

  在mysql中我们在插入数据的时候主要是以记录为单位向表中插入数据的,这些记录在磁盘中存放的形式也被称为行格式或者记录格式,innodb存储引擎设计的行格式主要有如下4种:1)compact 2)redundant 3)dynamic 4)compressed

2.指定行格式的语法

create table 表名(列信息)  row_format=行格式名称

alter  table 表名  row_format=行格式命令

3.compact

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

 

 

其中,上面的内容可以分为两个部分,前三个方框的内容可以被概括为记录的额外信息,后面的被称为记录的真实数据

3.1 变长字段长度列表

  我们都了解mysql支持一些变长的数据类型,比如varchar(M)varibinary(M) 各种TEXT类型,各种BLOB类型。我们可以把这些数据类型的列称为变长字段。变长字段中存储多少字节的数据是不固定的,所以我们在存储真实数据库的时候需要顺便把这些数据占用的字节数也存起来,这样才不至于把mysql服务器搞懵逼。也就是说这些变长字段占用的存储空间分为两部分:

  • 真正的数据内容
  • 该数据占用的字节数

      在compact行格式中,所有变长字段的真实数据占用的字节数都存放在记录的开头位置,从而形成一个变长字段长度列表,各变长字段的真实数据占用的字节数按照列的顺序逆序存放,比如说如下的某张表的记录,假设各个列采用的都是ascii字符集,每个字符只需要一个字节来编码,来看一下第一条记录各变长字段内容的长度。

列名 存储内容 内容长度(十进制) 内容长度(十六进制)
c1 'aaaa' 4 0x04
c2 'bbb' 3 0x03
c3 'd' 1 0x01

 

 

 

 

 

因为这些长度值需要按照列的顺序的逆序存放,所以最后变长字段长度列表的字节串用十六进制表示的效果是: 01 03 04

 

 

 

  

 

标签:11,段长度,字节数,记录,列表,innodb,变长,格式
来源: https://www.cnblogs.com/zmc60/p/15866078.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有