对于 MySQL 5.5 及之前的版本,每个 InnoDB 页面的大小固定为 16 KB。这个值代表了一种平衡:足够大以容纳大多数行的数据,但又足够小以最小化将不需要的数据传输到内存的性能开销。其他值未经测试或支持。
从 MySQL 5.6 开始,InnoDB 实例的页面大小可以是 4KB、8KB 或 16KB,由 innodb_page_size 配置选项控制。从 MySQL 5.7.6 开始,InnoDB 还支持 32KB 和 64KB页面大小。对于32KB 和 64KB的页面大小,不支持 ROW_FORMAT=COMPRESSED,最大记录大小为 16KB。
接着
较小的页面大小可以提高使用小块大小的存储设备的性能,特别是对于磁盘绑定工作负载中的 SSD 设备,例如 OLTP 应用程序。随着个别行的更新,更少的数据被复制到内存中、写入磁盘、重新组织、锁定等等。
使用比默认 16KB 更大(32KB 或 64KB)的页面大小如何?在什么情况下你应该这样做,你会得到什么好处?
我将使用传统 HDD 设置一个新的 MySQL 实例,我想知道更改默认 16KB 是否会对性能和存储利用率产生影响。
到目前为止,我只发现了使用 32KB 和 64KB 页面大小的缺点:
对于 32KB 和 64KB 的页面大小,不支持 ROW_FORMAT=COMPRESSED,最大记录大小为 16KB。