redundant 行记录格式

CREATE TABLE `mytest2` (
  `t1` varchar(10) DEFAULT NULL,
  `t2` varchar(10) DEFAULT NULL,
  `t3` char(10) DEFAULT NULL,
  `t4` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=REDUNDANT
mysql> select * from mytest2;
+------+------+------+------+
| t1   | t2   | t3   | t4   |
+------+------+------+------+
| a    | bb   | bb   | ccc  |
| d    | ee   | ee   | fff  |
| d    | NULL | NULL | fff  |
+------+------+------+------+
mysql> select hex(t1),hex(t2),hex(t3),hex(t4) from mytest2;
+---------+---------+---------+---------+
| hex(t1) | hex(t2) | hex(t3) | hex(t4) |
+---------+---------+---------+---------+
| 61      | 6262    | 6262    | 636363  |
| 64      | 6565    | 6565    | 666666  |
| 64      | NULL    | NULL    | 666666  |
+---------+---------+---------+---------+
3 rows in set (0.00 sec)

时间: 2024-11-13 10:54:55

redundant 行记录格式的相关文章

Innodb物理存储结构系列2 行记录格式

前一篇讨论了Innodb system,表空间,文件的关系及数据结构,这一篇记录下Innodb行记录的格式. 前提: 1. server层和innodb层都有自己对于record的记录格式,需要进行转换. 2. 物理文件上的记录存储,需要内存中的数据结构进行对应(任何数据都需要在内存中进行处理),进行存取的转换. 1. 测试case: create table `pp` ( `id` int(11) default null, `name1` varchar(100) default null,

COMPACT 行记录格式

CREATE TABLE `mytest` ( `t1` varchar(10) DEFAULT NULL, `t2` varchar(10) DEFAULT NULL, `t3` char(10) DEFAULT NULL, `t4` varchar(10) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=latin1 ROW_FORMAT=COMPACT mysql> select * from mytest; +------+------+----

Mysql技术内幕——表&索引算法和锁

表 4.1.innodb存储引擎表类型 innodb表类似oracle的IOT表(索引聚集表-indexorganized table),在innodb表中每张表都会有一个主键,如果在创建表时没有显示的定义主键则innodb如按照如下方式选择或者创建主键.首先表中是否有唯一非空索引(unique not null),如果有则该列即为主键.不符合上述条件,innodb存储引擎会自动创建一个6字节大小的指针,rowid(). 4.2.innodb逻辑存储结构 innodb的逻辑存储单元由大到小分别是

MySQL InnoDB存储引擎之表(一)

主要介绍InnoDB存储引擎表的逻辑存储以及实现.重点介绍数据在表中是如何组织和存放的. 1.索引组织表(index organized table) 在InnoDB存储引擎中,表都是根据主键顺序组织存放的,这种存储方式的表叫索引组织表.在InnoDB存在引擎表中,每张表都有个主键(Primary key),如果在创建表时没有显示定义主键,则会按照如下方式选择或者创建主键:a.判定是否有非空的唯一索引(unique not null),如果有则该列即为主键.若果有多个,则选择建表是第一个定义的非

InnoDB存储引擎表的逻辑存储结构

1.索引组织表: 在InnoDB存储引擎中,表都是依照主键顺序组织存放的.这样的存储方式的表称为索引组织表,在innodb存储引擎表中,每张表都有主键.假设创建的时候没有显式定义主键,则InnoDB会依照例如以下方式选择或者创建主键: 1). 首先推断表中是否有非空的唯一索引,假设有.则该列就为主键. 2).   假设不符合上述条件,则innodb会自己主动创建一个6字节大小的指针 假设表中有多个非空唯一索引时,InnoDB将选择建表时第一个定义的非空唯一索引为主键,通过_rowid能够显示表的

重新学习MySQL数据库3:Mysql存储引擎与数据存储原理

重新学习Mysql数据库3:Mysql存储引擎与数据存储原理 数据库的定义 很多开发者在最开始时其实都对数据库有一个比较模糊的认识,觉得数据库就是一堆数据的集合,但是实际却比这复杂的多,数据库领域中有两个词非常容易混淆,也就是数据库和实例: 数据库:物理操作文件系统或其他形式文件类型的集合: 实例:MySQL 数据库由后台线程以及一个共享内存区组成: 对于数据库和实例的定义都来自于 MySQL 技术内幕:InnoDB 存储引擎 一书,想要了解 InnoDB 存储引擎的读者可以阅读这本书籍. 数据

InnoDB物理行中null值的存储的推断与验证

前言 想写这边文章,是因为之前想写一个解析innodb ibd文件的工具,在写这个工具的过程中,发现逻辑记录转物理记录的转换中,最难的有两部分,一是每行每字段null值占用的字节和存储,二是变长字段占用的字节和存储的格式.本文中重点针对第一种情况.第二种情况之后会专门写一篇之前看姜成尧的<InnoDB存储引擎>103页介绍compact行记录格式: 变长字段之后的第二个部分是NULL标志位,该位指示了该行数据中是否有NULL值,有则用1表示.该部分所占字节为1字节 之后便思考是否不管有多少个列

innodb 行格式(row_format)案例一则

背景知识:InnoDB存储引擎和大多数数据库一样,记录是以行的形式存储的,这意味着页中保存着表中一行行的数据.另外MYSQL对每个页存放的记录数又有硬性的规定,最少2行,最多16KB/2 - 200,即7992行.在InnoDB 1.0.X之前,InnoDB存储引擎提供了Compact和Redundant两种格式来存放行记录数据.Redundant是mysql5.0版本之前的行记录存储方式,之后仍然支持这个格式是为了兼容之前版本的格式,5.1之后很少用到了,因为Compact的结构设计比它好得多

mysql 学习 - InnoDB的行

InnoDB行 我们平时是以记录为单位来向表中插入数据的,这些记录在磁盘上的存放方式也被称为行格式或者记录格式.InnoDB存储引擎到现在为止设计了4种不同类型的行格式,分别是Compact.Redundant.Dynamic和Compressed行格式 compact(行格式) 记录的额外信息这部分信息是服务器为了描述这条记录而不得不额外添加的一些信息,这些额外信息分为3类,分别是变长字段长度列表.NULL值列表和记录头信息 关于变长字段 变长的数据类型,比如VARCHAR(M).VARBIN