我正在做一個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
你正在運行什麼類型的查詢?有了這種數據量,您通常需要OLAP類型的分析查詢和數據重組/彙總。 –
'...簡單但沉重的查詢。沒有加入......這種查詢沒有優化的餘地。需要所有行的查詢將需要獲取所有頁面。 – joop
你需要優化你的硬件以獲得快速的磁盤讀取,因爲你沒有希望在內存中緩存那麼多的數據。對於某些查詢,您可能會提供物化視圖或其他優化以提高性能。 –