插入表格Postgres 9.4 vs 9.1

时间:2015-04-22 10:26:54

标签: postgresql postgresql-9.1 postgresql-9.4

我的团队正在考虑从9.1切换到9.4,作为评估的一部分,我们希望衡量一下INSERT INTO TABLE ...有多少固定长度类型的3-4列,例如{INT 1}},DOUBLE PRECISION。我们使用的是未加修饰的INSERT,表格为loggednot temporaryfsync设置为on

Q0 :有没有理由认为9.4在此特定声明中会比9.1更快?

例如,基于改进的WAL性能:

Excel Recalculation

显然,最好的答案是去查看我们的数据并进行实验,但让我们允许一些推测。

Q1 :是否有您了解的效果评估?

Q2 INSERT花了多少WAL

服务器上的设置(从9.1配置文件逐字复制)

#fsync = off
#synchronous_commit = on
#wal_sync_method = fsync
#full_page_writes = on
#wal_buffers = -1
#wal_writer_delay = 200ms

shared_buffers = 15GB
temp_buffers = 1024MB
work_mem = 1024MB

1 个答案:

答案 0 :(得分:3)

您提供的链接基于Section E.2.3.1.2. General Performance中的信息 - 顺便说一句,这是一个很好的解读。根据您建议的测试,我不希望任何真正的性能差异,因为您不会利用并行或部分写入(关于wal文件)。也就是说,您将来可能会遇到这种情况。此外,9.4(以及9.1后真的)提供了许多有用的工具和性能增强,在我看来,这证明了从9.1切换到9.4的合理性。例如,从9.2开始,JSON现在是一种数据类型,只能进行索引扫描,并且内存中的排序已经提高了多达25%。 9.3看到物化视图的引入(9.4中的并发刷新)和可更新的"简单" (定义在9.4中略有扩展)观点。在9.4中,聚合被增强并且定义了ALTER SYSTEM(能够使用SQL命令更改配置设置(进入postgresql.auto.config,最后读取,确保它覆盖postgresql.config值)。

值得注意的是,默认日志记录也已更改。例如,在创建表时,您不会收到有关隐式索引和序列创建的消息(将日志级别设置为DEBUG1以进行修复 - 当我从9.1切换到9.3时,特别是在讲座期间,让我发疯了。) p>

关于问题1,我进行了TPC基准测试(C和VMS是唯一不免费的)。对于问题2,这实际上取决于您的wal设置,但是根据我在配置文件中看到的内容,它与版本性能无关。我还会在您的系统上运行pgtune(下面的链接),以确保您的配置文件在测试之前尽可能最佳。

与其他评论者一样,只需构建它,看看会发生什么。你可能与直接插入没有太大差别(如果有的话),所以我尝试大型,多表连接,大量排序和大量事务模拟(例如,大量插入,更新和删除 - 只需使用plpgsql以简化) - TCP查询也可以很好地进行性能测试。

链接:

找到"新的" PostgreSQL维基页面,将版本号添加到以下URL的末尾。

您可以在pgtune.leopard.in.ua找到pgtune的GUI版本;单独下载是pgfoundry的命中或错过,因为它似乎总是失效。