开启InnoDB页面压缩后ibd文件反而变大的原因咨询
InnoDB Page Compression后文件增大的原因分析
数据特性不适合zlib压缩
zlib对重复度高、冗余多的数据(如长文本、结构化日志)压缩效果显著,但如果test表存储的是已压缩格式(图片、视频)、加密数据或低重复度的随机数据,zlib无法有效压缩,反而会因添加压缩页的元数据(如压缩标识、校验信息),导致单页体积略有增加,最终整体文件变大。OPTIMIZE TABLE的额外开销
MySQL 5.7中OPTIMIZE TABLE会重建表并重组数据,过程中会创建临时表导入原数据再替换原表。若原表碎片较少,重建时因压缩页的对齐要求、临时表的元数据开销,或InnoDB的预分配空间策略(为后续写入预留更大空间),会导致最终ibd文件体积超过原表。压缩页存储机制的限制
InnoDB按页(默认16KB)进行压缩,每个压缩页需存储压缩后数据和解压元数据。若单页数据压缩后+元数据的总大小仍大于16KB,InnoDB会放弃压缩该页,但仍保留压缩相关元数据,导致该页体积比未压缩时更大。若表中多数页属于这种情况,整体文件必然增大。预分配空间的影响
设置压缩并执行OPTIMIZE后,InnoDB可能会预分配更多磁盘空间以优化后续写入性能,这部分未使用的预分配空间会被计入ibd文件大小。可通过以下SQL查看未使用空间:SELECT table_name, data_free FROM information_schema.tables WHERE table_schema = '你的数据库名' AND table_name = 'test';若
data_free值较大,说明文件包含大量未使用的预分配空间。
内容的提问来源于stack exchange,提问作者Lulu_Chan
相关产品推荐
相关产品推荐

