##1.InnoDB中的变长列
变长列就是数据长度不固定的列。
##2.行溢出数据
##3.行记录格式
#####3.1Redundant(冗余)
- header 列数量,字段偏移表的单位,下一行记录的指针等信息
- rowid 没有可用的主键时,使用rowid来作为隐藏主键
- txid transactionid 事务id
- roll pointer 回滚指针
- col 未溢出数据
溢出数据的情况:
那么这种数据格式为什么叫做冗余呢?就是因为字段便宜列表这段信息,因为它记录的每个字段的相对位置这个本身就存在冗余,因为当字段是不定长的时候我们有必要知道偏移量,但是如果是定长字段,我们就可以自己推断出他的所在位置。
#####3.2Compact
null标志位: 指示行记录中的null值,每个bit代表一个字段。
所以这个compact相比于之前的冗余,也就改变了前两个数据,也就是边长字段长度表和null标志位。 其实就是辅助我们可以找到每个字段对应的值。
#####3.3Dynamic
Dynamic相较于之前的数据格式做的改动在于数据溢出的这块逻辑;
如果大于一个阈值就仅存一个blob页的指针。
这样的话就更加节约了行记录的空间。
之所以叫做Dynamic,动态,就是因为他的字段数据有时候存的数据有时候存的是个指针。
#####3.4Compressed
他在动态数据格式的基础上做了一个压缩的逻辑。就是典型的用时间换空间的转换。所以实际用途中不多,一般都是动态数据格式。
##4.总结
##5.针对于数据存储的优化
数据量做一个控制,一般控制在500万,甚至在300万以内。