2017-08-11 41 views
1

我正在做一个PoC来检查Postgres是否适合我们的用例。具有超过十亿行的表的Postgres性能

我有以下工作量:

数据查询: 表示层将检索数据每15分钟为过去2周

数据负载: 每隔15分钟,5万行的数据被加载到一个表中,我发现它的负载消耗375MB。 每天,这将是4.8亿行,表格大小为36GB。

在我加载了数天的数据(表中约有1亿行)之后,我跑了很少的查询,并且观察到select查询在几个小时内没有响应。例如选择计数(*)..并选择* ..简单但繁重的查询。没有加入。

我的要求是每15分钟加载一次数据并存储几个月,但我还没有达到那么远。即使有数天的数据用于上述工作负载,我也观察到select查询没有响应。

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

我已经通过postgres官方文档(​​)上的限制,我的要求还没有真正达到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

RAM:200GB

不知Postgres的需要一个实际的专用硬件。也许它不能在虚拟硬件上处理这个负载!

欣赏如果您对此有任何意见或建议。 BR/Nag

+0

你正在运行什么类型的查询?有了这种数据量,您通常需要OLAP类型的分析查询和数据重组/汇总。 –

+1

'...简单但沉重的查询。没有加入......这种查询没有优化的余地。需要所有行的查询将需要获取所有页面。 – joop

+0

你需要优化你的硬件以获得快速的磁盘读取,因为你没有希望在内存中缓存那么多的数据。对于某些查询,您可能会提供物化视图或其他优化以提高性能。 –

回答

1

问题不是PostgreSQL,而是硬件,你将如何调整数据库。事实上,雅虎,Reddit,Yandex和其他公司都使用它。 从9.6开始有paralell queries,所以你可以更有效地利用你的CPU。

0

您可以查看一些配置步骤,以获得更好,更快速的响应,处理大量数据。您可以使用多租户方法,索引数据库,使用Linux基本系统而不是Windows。

This链接将帮助您排除这些方面以及其他一些方面。

相关问题