Postgres 对超过 10 亿行的表的性能

Nag*_*Nag 10 postgresql database-performance query-performance

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

我的工作量如下:

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

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

在加载数据几天后(表中大约有 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
Run Code Online (Sandbox Code Playgroud)

服务器配置:

虚拟化硬件!

vCPU:32

内存:200GB

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

如果您对此有意见或建议,不胜感激。BR/纳格

1ac*_*ac0 5

问题不是 PostgreSQL 而是硬件以及如何调整数据库。事实上,雅虎、Reddit、Yandex 和其他公司都在使用它。从 9.6 开始,出现了并行查询,因此您可以更有效地利用 CPU。