MYSQL中COMPACT行格式的具体使用 |
MySQL 的数据存放在哪个文件?当我们输入下面的命令之后:就可以看到 /var/lib/mysql mysql> SHOW VARIABLES LIKE 'datadir'; +---------------+-----------------+ | Variable_name | Value | +---------------+-----------------+ | datadir | /var/lib/mysql/ | +---------------+-----------------+ 1 row in set (0.00 sec) 创建一个数据库时, 都会在 /var/lib/mysql/ 目录里面创建一个以 database 为名的目录 在数据库中创建表时, [root@root]#ls /var/lib/mysql/test db.opt t_test.frm t_test.ibd 总结(回答问题): MySQL 5.6.6之后,mysql的数据默认存放到 .ibd后缀的文件(独占表空间文件) 中 。
InnoDB 行格式有哪些?InnoDB 提供了 4 种行格式:Redundant(冗余)、Compact(紧凑)、Dynamic(动态) 和 Compressed(压缩行)
其中 Dynamic 和 Compressed 与 Compact格式特别像 COMPACT 行格式长什么样?(结构如图:来自小林coding) 记录的额外信息记录的额外信息包含 3 个部分:变长字段长度列表、NULL 值列表、记录头信息 。 1. 变长字段长度列表表的一行数据中,找出类型为 varchar的字段,并将其倒序存储在 变长字段长度列表 。 比如:表的一行数据中,varchar字段name为11,varchar字段phone是123 。
注意: 为什么「变长字段长度列表」的信息要按照逆序存放?
每个数据库表的行格式都有「变长字段字节数列表」吗?
2. NULL 值列表如果存在允许 NULL 值的列,则每个列对应一个二进制位(bit),二进制位按照列的顺序逆序排列 。
注意: 每个数据库表的行格式都有 NULL 值列表 吗?
NULL 值列表 是固定 1 字节空间吗?如果这样的话,一条记录有 9 个字段值都是 NULL,这时候怎么表示?
记录的真实数据1. row_id如果我们建表的时候指定了主键或者唯一约束列,那么就没有 row_id 隐藏字段了 。如果既没有指定主键,又没有唯一约束,那么 InnoDB 就会为记录添加 row_id 隐藏字段 。row_id不是必需的,占用 6 个字节 。 2. trx_id事务id,表示这个数据是由哪个事务生成的 。 trx_id是必需的,占用 6 个字节 。 3. roll_pointer这条记录上一个版本的指针 。roll_pointer 是必需的,占用 7 个字节 。 到此这篇关于MYSQL中COMPACT行格式的具体使用的文章就介绍到这了,更多相关MYSQL COMPACT行格式内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持! |