MySQL 的 Compact 行格式中会用 「NULL 值列表」来标记值为 NULL 的列,NULL 值并不会存储在行格式中的真实数据部分。
NULL值列表会占用 1 字节空间,当表中所有字段都定义成 NOT NULL,行格式中就不会有 NULL值列表,这样可节省 1 字节的空间。
nnoDB是一个将数据存储到磁盘上的存储引擎,所以就算我们关闭、重启服务器,数据还是存在的。而在真正处理数据的时候是在内存中进行的,所以需要把磁盘中的内容加载到内存中。
我们知道读写磁盘是很慢的。当我们想从表里获取数据的时候,InnoDB会一条一条的从磁盘中读出来吗?不会的!因为那样太慢了。它采取的方式是:将数据划分为若干页,以页做为磁盘和内存交互的基本单位。InnoDB中页的大小一般为16KB。
在服务器运行的过程中不可以修改页的大小,只能在初始化数据目录的时候指定。
行格式(row_format):一条数据记录在磁盘上的存储结构。
InnoDB 提供了 4 种行格式,分别是 Redundant、Compact、Dynamic和 Compressed 行格式。
我们可以在创建表或者修改表的语句中指定所使用的行格式
create table 'table info ..' row_format = '行格式名称'
alter table 'table name' row_format = '行格式名称'