Postgres的最佳pg_dump压缩设置

文摘   科技   2024-08-10 08:10   北京  

前言

圣诞节和新年之间的时间总是一个很好的安静的时间,可以集中精力,勾掉一些发霉的待办事项清单。对我来说,这一次最重要的项目是一个脚本(不知怎么变成了一个小框架),下载并导入一些公开可用的“真实世界”Postgres数据集,以便能够对它们进行一些小测试。

这个“需求”的背景是,相当长一段时间以前,当我被问到在最近的Postgres版本中添加的较新的“比较看好的”压缩方法(lz4, zstd)是否对于普通的数据库来说是一个不需要思考的问题,或者也有一些隐藏的缺点,不应该作为新的默认值。遗憾的是,当时我没有一个很好的答案,我不得不选择典型的答案——这取决于数据集....但这个话题激起了我的兴趣,并促使我进行了一些实验……但是,见鬼,如何获得神话般的“平均”数据集来进行基准测试? 好吧,我想获得某种东西的唯一方法是尝试收集一些现实生活中的数据集,并在它们上运行一些测试,看看是否有什么东西可以立即展现出来!

能用场景:  ZSTD确实应该成为大多数数据集新的默认pg_dump压缩方法。

仅供参考——请注意,pg_dump并不是一个很好的针对操作威胁的主备份方法!

测试框架

我无意中为这个压缩测试开发的by-catch框架可以在Github[1]上找到

基本上,它下载/提取/转换/加载一些公开可用的Postgres数据集,并在结果数据库上运行测试脚本,该脚本使用不同的压缩设置运行pg_dump循环。测试的设置低于这里定义的设置[2]

METHOD_LVLS="gzip:1 gzip:3 gzip:5 gzip:7 gzip:9 lz4:1 lz4:3 lz4:5 lz4:7 lz4:9 lz4:11 zstd:1 zstd:5 zstd:9 zstd:13 zstd:17 zstd:21"

PS:如果你打算自己运行脚本,请注意,它将花费半天的时间,并通过互联网下载约7GB的文件,并且在默认设置下需要约100GB的磁盘空间。如果存储空间不足,设置DROP_DB_AFTER_TESTING=1,以便在运行压缩测试后立即删除所有恢复的db。

数据库杂记
PostgreSQL,SAP HANA,Sybase ASE/ASA,Oracle,MySQL,SQLite各类数据库, SAP BTP云计算技术, 以及陈式太极拳教学倾情分享。
 最新文章