我正在研究平臺上通過Twitter API讀取相關的Twitter提要,並將它們存儲在PostgreSQL數據庫中以備將來分析。中間件是Perl,服務器是運行Debian linux的8GB RAM的HP ML310。PostgreSQL阻止太多插入
問題是,Twitter的飼料可能很大(每秒很多條目),我不能等待插入,然後再回來等待下一條推文。所以我所做的就是使用fork(),因此每條推文都會獲得一個新進程,以便插入數據庫和偵聽器,並快速返回以獲取下一條推文。但是,因爲每個這些進程都有效地打開了一個到PostgreSQL後端的新連接,所以系統永遠不會趕上它的twitter feed。
我願意使用連接池建議和/或升級硬件,如果有必要使這項工作,但將不勝感激任何意見。這可能是RAM的限制,還是有配置或軟件方法,我可以嘗試使系統足夠快速?
您可以收集包裝中的數據並使用防滑插入。它更快。 – alex
另外,檢查不必要的索引。它會減慢插入操作。您可以嘗試刪除除主羣集索引之外的所有索引,並稍後處理數據。 – alex
正如@ user1883592所說,批量插入通常更快,如果您不需要立即需要數據,則可以將傳入數據轉儲到一個平面文件中,並執行一個大事務來插入X分鐘值每X分鐘一次。 –