postgresql - 插入表 Postgres 9.4 与 9.1

标签 postgresql postgresql-9.1 postgresql-9.4

我的团队正在考虑从 9.1 切换到 9.4,作为部分评估,我们希望衡量 INSERT INTO TABLE ... 的改进程度,其中有 3- 4 列固定长度类型,例如 INTDOUBLE PRECISION。我们使用的是非批处理的 INSERT,并且表是已记录的且不是临时的。 fsync 设置为on

Q0:是否有任何理由认为在这个特定语句上 9.4 会比 9.1 更快?

例如基于改进的 WAL 性能:

https://momjian.us/main/writings/pgsql/features.pdf

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

问题1:您是否了解绩效评估?

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

最佳答案

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

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

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

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

链接:

要查找“新增功能”PostgreSQL wiki 页面,请将版本号添加到以下 URL 的末尾。 .

您可以在 pgtune.leopard.in.ua 找到 pgtune 的 GUI 版本; pgfoundry 的独立下载时好时坏,因为它似乎总是出现故障。

关于postgresql - 插入表 Postgres 9.4 与 9.1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29794652/

相关文章:

sql - 选择组中的所有行都不为空 postgresql

PostgreSQL 多种认证方式

php - "no pg_hba.conf entry for host"但 "LOG: connection authorized"

sql - 使用 JSONB 列中的值连接表

ruby-on-rails - 是否可以以与数据库无关的方式将日期搜索为字符串?

SQL - 在两个连续记录中减去日期,然后求平均值

postgresql - 通过 AWS-lambda 函数访问在 EC2 实例中运行的数据库

python - PostgreSQL 和 psycopg2 : database does not exist

postgresql - Postgis 2.2.0 和 Postgres 9.4.5 的问题:PG::UndefinedFile - 错误:无法访问文件 "$libdir/postgis-2.1"

database - 我怎样才能在 postgres DB 中获取过去几个月的日志。