<b>背景</b>
最近发布的mariadb 10.1 alpha版本,提交了一个改动,放宽了innodb page<=16k的限制,将上限提高到64k。 从mdev-6075需求文档中可以看出,目前只支持compact的结构,dynamic结构能否支持还在研究,compressed结构则确定无法支持。
<b>业务应用</b>
因此当我们的数据行本身就比较长,尤其是做大块插入的时候,更大的页面更有利于提升如速度,因为一个页面可以放入更多的行,每个io写下去的大小更大,就可以以更少的iops写更多的数据。 而且,当行长超过8k的时候,如果是16k的页面,就会强制转换一些字符串类型为text,把字符串主体转移到扩展页中,会导致读取列需要多一个io,更大的页面也就支持了更大的行长,64k页面可以支持近似32k的行长而不用使用扩展页。 但是,如果是短小行长的随机读取和写入,则不适合使用这么大的页面,这会导致io效率下降,大io只能读取到小部分有效数据,得不偿失。