我们在 zfs 上托管了一个 postgresql95 OLAP 数据库,并启用了 lz4 压缩。根据建议,我们将 zfs 记录大小调整为 8KB,因为这是 postgres 块大小。预写日志位于其自己的数据集上,记录大小设置为 1M:
NAME PROPERTY VALUE SOURCE
ssd recordsize 128K default
ssd/pgdata recordsize 8K local
ssd/pgdata/log recordsize 1M local
我注意到日志压缩率好多了。我想知道原因是它更易于压缩还是较小的记录大小真的损害了压缩率。
NAME PROPERTY VALUE SOURCE
ssd compressratio 1.84x -
ssd/pgdata compressratio 1.84x -
ssd/pgdata/log compressratio 2.64x -
答案1
是的,它会影响压缩率。我已经将 Postgres 的记录大小恢复到 128K,因为 8K 的压缩率很差,不值得潜在的性能提升。
答案2
在 ZFS 上,recordsize 中设置的值不是硬性规定,而是上限:
在 ZFS 中,所有文件都以不同大小的单个块(最大为 recordsize)或使用多个 recordsize 块进行存储。来自:https://blogs.oracle.com/roch/entry/tuning_zfs_recordsize
所以我认为您看到的值与存储的数据相关。