Postgresql
通過 Python 腳本加速 AWS PostgreSQL 插入
我的 AWS EC2 實例中有 120,000 個 csv,每個包含 120,000 行。我不能將它們中的每一個按原樣插入到我的 AWS RDS postgresql DB 中,這將是 120,000^2 = 14,400,000,000 條記錄。每個 csv 大約為 2 MB。
我的做法是:
pandas
在庫的幫助下,將 120,000 條記錄轉換為每個 csv(現在壓縮數據後為 5 MB)的 1 條記錄(字典列表)的 Python 腳本- 然後,python 腳本通過
pandas.to_sql
(它使用sqlalchemy
- 我使用 python 多處理模組來充分利用我的 AWS EC2 來加速數據插入
- 我沒有創建額外的索引來加快我的數據插入
- 我使用具有高達 25GB 網路連接的 AWS EC2 實例
我的觀察是:
- 一開始,我的程式碼每分鐘會插入 50 個 csv,速度不錯
- 但是,現在,插入 50k csv,它只在 5 小時內插入 1k csv,大約每分鐘 3.33 csv
- 我嘗試使用 psql
\copy
並意識到插入 1 個 csv 需要 30-50 秒,這比我的轉換數據並直接插入數據庫的腳本慢我不確定如何加快速度。
按照設計,t2 類不適合高工作量。一旦你用完所有的 CPU 積分,性能就會很糟糕。再次,設計使然。
如果您關心性能,請不要使用 t2(或任何 t*)實例。
據我所知,沒有辦法監控 RDS 上的 CPU 積分(在 EC2 上可以這樣)