2017-08-11 76 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鏈接將幫助您排除這些方面以及其他一些方面。

相關問題