postgresql - 具有超过十亿行的表的 Postgres 性能

标签 postgresql database-performance query-performance

我正在做一个 PoC 来检查 Postgres 是否适合我们的用例。

我有以下工作量:

数据查询: 表示层将在过去 2 周内每 15 分钟检索一次数据

数据加载: 每 15 分钟,就有 500 万行数据被加载到一个表中,我观察到该加载消耗了 375MB。 每天,这将是 4.8 亿行,表大小为 36GB。

在我加载数据几天后(表中大约 10 亿行),我运行了几个查询,我观察到选择查询几个小时都没有响应。例如select count(*) .. 和 select * .. 简单但繁重的查询。没有连接。

我的要求是每 15 分钟加载一次数据并将其存储几个月,但我还没有做到这一点。即使有几天的上述工作负载数据,我也观察到选择查询没有响应。

我想知道 postgres 是否对这种工作负载有任何限制,或者我没有调整好它!我是否错过了任何关键参数的配置?

我已经查看了 postgres 官方文档 ( https://www.postgresql.org/about/ ) 的限制,我的要求并没有真正达到 postgres 中规定的理论限制。

Postgres 配置: 以下是我配置的 postgres 参数。

checkpoint_completion_target | 0.9
default_statistics_target    | 500
effective_cache_size         | 135GB
maintenance_work_mem         | 2GB
max_connections              | 50
max_stack_depth              | 2MB
max_wal_size                 | 8GB
min_wal_size                 | 4GB
shared_buffers               | 45GB
wal_buffers                  | 16MB
work_mem                     | 471859kB

服务器配置:

虚拟化硬件!

vCPU:32

内存:200GB

我想知道 postgres 是否需要物理专用硬件。也许它无法处理虚拟化硬件上的这种负载!

如果您对此有任何意见或建议,我们将不胜感激。 BR/老马

最佳答案

问题不会出在 PostgreSQL 上,而是硬件和您将如何调优数据库。事实上,雅虎、Reddit、Yandex 和其他公司都在使用它。 从 9.6 开始有 parallel queries这样您就可以更有效地利用您的 CPU。

关于postgresql - 具有超过十亿行的表的 Postgres 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45629767/

相关文章:

SQL Server 查询 - 哪个性能更好?

postgresql - 从另一个容器(Docker)连接到 postgresql 容器

在 Windows 平台上创建 PostgreSQL C 扩展

mysql - MySQL中的性能改进和数据迁移策略

mysql - 如何使用 JOINED 表和 ORDER BY 和 OFFSET 改进 MySQL 查询

sql - 如何估计 SQL Server 表中插入的单行的理论大小

sql - 对任意分布的结果进行排序

php - 按颜色对照片进行分组

MySQL 配置调整为 1G DB、8GB RAM

MySQL 元数据(使用情况和性能统计)