存储引擎
服务器支持不同的存储引擎,不同的表可以设置不同的存储引擎,真实数据在不同存储引擎中存放的格式一般是不同的,有的存储引擎将数据存放在磁盘中,有的存储引擎比如Memory,不用磁盘存储,服务器关闭后数据就消失了。
InnoDB
InnoDB是一个将表中的数据存储到磁盘上的存储引擎,所以即使关机后重启我们的数据还是存在的
页(磁盘和内存的交互)
规定,一页至少存放2条记录,一页16KB=16384字节
行格式(4种)
表的记录在磁盘上的存放方式被称为行格式或者记录格式
ROW_FORMAT=行格式名称
InnoDB 行格式有:
1. Compact
变长字段长度列表,NULL值列表 逆序存放
NULL值列表必须用整数个字节的位表示,高位补零
记录头信息 用于描述记录,由固定的5个字节组成,也就是40个二进制位,不同的位代表不同的意思
真实数据列还包含一些隐藏列,由存储引擎自动生成
2. Redundant
mysql5.0之前用的
会把该条记录中所有列(包括隐藏列)的长度信息都按照逆序存储到字段长度偏移列表
记录头信息占用6字节,48个二进制位
对于Compact和Redundant行格式来说,如果某一列中的数据非常多的话,在本记录的真实数据处只会存储该列的前768个字节的数据和一个指向其他页的地址,然后把剩下的数据存放到其他页中,这个过程也叫做行溢出,存储超出768字节的那些页面也被称为溢出页。
3. Dynamic
mysql5.7 默认使用
4. Compressed
Compressed行格式会采用压缩算法对页面进行压缩。
Dynamic和Compressed行格式类似于COMPACT行格式,只不过在处理行溢出数据时有点儿分歧&#x