我正在做一个 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/