我正在使用 postgres 12 并且有一個大小為 1TB 的資料庫。我正在對大小為 140 GB 的表執行大洗掉。
我正在測驗該程序并希望對表及其內容進行 pg_dump 但按原樣運行大約需要 33 分鐘
pg_dump -d titan -t public.play > /backup/playBackup.sql
我知道 pg_dump 確實包含一個 --jobs 選項,鑒于我有一個 32 核機器可以真正使用,但這是備份資料庫本身而不是資料庫中的表。
有沒有更快的方法來備份我需要的表?
uj5u.com熱心網友回復:
該--jobs選項僅適用于“資料庫”格式轉儲,不會幫助您處理單個表,因為單個表由單個行程轉儲。
您當然可以啟動幾個并行COPY陳述句:
COPY (SELECT * FROM titan WHERE id % 5 = 0) TO '/path/titan0.csv' (FORMAT 'csv');
COPY (SELECT * FROM titan WHERE id % 5 = 1) TO '/path/titan1.csv' (FORMAT 'csv');
COPY (SELECT * FROM titan WHERE id % 5 = 2) TO '/path/titan2.csv' (FORMAT 'csv');
COPY (SELECT * FROM titan WHERE id % 5 = 3) TO '/path/titan3.csv' (FORMAT 'csv');
COPY (SELECT * FROM titan WHERE id % 5 = 4) TO '/path/titan4.csv' (FORMAT 'csv');
如果您同時啟動這些陳述句,您就有機會獲得同步的順序掃描并通過單次讀取表來完成。然后您可以并行加載這些檔案。
如果您也需要表結構,請運行以下命令:
pg_dump --section=pre-data -t public.play titan
pg_dump --section=post-data -t public.play titan
先恢復前資料,再恢復資料,再恢復后資料。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/442347.html
標籤:PostgreSQL psql 备份
上一篇:如何選擇總折扣百分比和固定金額?
