MYSQL中,行记录的存储结构一般包括四部分:
- 变长字段长度列表
- NULL值字段列表
- 记录头信息
- 记录的真实信息
变长字段长度列表是由多组两个字节组成的,因为MYSQL中规定行记录的最多占据的空间是65535个字节,所以使用两个字节的空间(0~2^16-1)就可以表示出某个变长字段使用空间的真实长度。
NULL值字段列表是由多个单字节组成的,之所以使用一个字节,而不是一个比特位表示某个字段是否为NULL,是由于当存储某列是否为NULL时,使用一个字节来表示具有更好的内存对齐,这对于处理和访问数据更加高效。如果使用一个比特位来表示是否为NULL,它可能需要额外的处理来将这些位打包成字节,这可能会导致更复杂的数据访问和处理过程,从而影响性能。
记录头信息每个行记录都只有一份,占据五个字节,用来存储该行记录是否被删除、下条记录地址等信息,具体可看尚硅谷康师傅的MYSQL高级篇讲解:MYSQL高级篇