我正在数字海洋的8gbram/4cpu/80gbssd云服务器上测试PostgreSQL。我最初使用postgresql.conf中的默认设置运行PgBench,然后更改了一些常用设置——共享缓冲区、工作内存、维护工作内存、有效缓存大小——以反映8gb的RAM。在进行了第二组测试之后,我发现我的一些结果实际上更糟。你有什么建议吗?我对PgBench和PostgreSQL的总体优化还比较陌生。
设置:
共享缓冲区=2048mb
工作内存=68mb
维护工作内存=1024mb
有效缓存大小=4096mb
测验:
pgbench-i-s 100系列
pgbench-c 16-j 2-T 60-U邮政编码
pgbench-S-c 16-j 2-T 60-U邮政编码
pgbench—c 16—j 4—T 60—U邮政编码
pgbench-S-c 16-j 4-T 60-U邮政编码
pgbench-c 16-j 8-T 60-U邮政信箱
pgbench-S-c 16-j 8-T 60-U邮政编码
这些测试有多有效?这是使用PgBench的有效方法吗?如何自定义测试以正确反映数据和服务器实例?

最佳答案

什么叫“更糟”?你跑pgbench多久了?对于实际值,该测试应至少执行2小时。你有什么版本的PostgreSQL?
注意:在解释pgbench结果时要非常小心。可能您应该优化应用程序的执行,而不是pgbench。pgbench是一个很好的软硬件检查工具,是一个不好的PostgreSQL配置优化工具。
上面提到的配置变量是配置的基本变量,您可能不会错在那里(服务器永远不能主动使用交换——这些变量确保了这一点)。
我用的公式是:
--专用服务器8GB RAM
共享缓冲区=1/3。。1/4专用RAM
有效缓存大小=2/3专用RAM
维护工作内存>高于最大表(如果可能)
其他1/10 RAM
否则最大连接*1/4*工作存储器
work_mem=珍贵的设置基于慢速查询分析
(第一次设置约100MB)
--一定是真的
最大连接*工作内存*2+共享缓冲区
+1GB(O.S.)+1GB(文件系统缓存)通常WAL缓冲区大小和检查点段的默认值也太低。你可以增加它。

10-05 22:42