跳至正文
Wener Notes

PostgreSQL & ZFS

约 1 分钟阅读
标签:PostgreSQL调优
bash
zfs create -o mountpoint=/data/ns/data-system/postgres \
  -o atime=off \
  -o primarycache=metadata \
  -o recordsize=16k \
  data/kube/data-system-postgres

postgresql.conf

ini
# ZFS 总是一致的 - 2倍性能
full_page_writes=false

# ZFS 参考
random_page_cost = 1
effective_io_concurrency = 20

# pgtune https://pgtune.leopard.in.ua/
# SSD
random_page_cost = 1.1
effective_io_concurrency = 200
# HDD
random_page_cost = 4
effective_io_concurrency = 2

zfs

ini
atime = off
relatime = on
# 2.0 后可以使用 zstd
# CPU 时间换 IO 时间
compression = lz4
# db 默认 8k, 但压缩率低
recordsize = 128K
# 只缓存元数据 - 避免双份数据缓存
primarycache = metadata

异步提交

  • 接受异常丢失部分数据
  • 换取 20 倍 的性能
  • 适用于 数仓场景或大量写入场景
bash
# 1s 超时, 最多丢失 1s 数据
echo 1 > /sys/module/zfs/parameters/zfs_txg_timeout
echo 'options zfs zfs_txg_timeout=1' >> /etc/modprobe.d/zfs.conf

zfs

ini
logbias=throughput

pg

ini
# 关闭同步提交
synchronous_commit = off

关联信息

反向链接、本文链接的其他页面和外部资料。

参考资料

其他外链3 条
最近更新commit eebbdfc编辑