首先說下InnoDB壓縮,包括兩種,一種是使用最廣泛的記錄壓縮,也就是通過在create table或alter table時設置key_block_size或compressed來啟用。這種壓縮並不是記錄透明的,壓縮前它會提取每條記錄的索引信息。相對來說壓縮比會降低。另一種是透明頁壓縮,在5.7版本中支持,使用較少,其壓縮操作時在InnoDB的文件IO層實現,對InnoDB上層是透明的。該壓縮需要依賴稀疏文件(sparse file)和操作系統的(hole punching)特性。不管是哪一種,都以page/block為單位來獨立保持壓縮後的數據,而文件系統是需要塊對齊的,一般都是4KB,這就意味著一個16KB的頁,即使壓縮為5KB,也需要使用2個文件block,即8K保存。其中的3KB空間填空。