Postgresql

COPY 命令產生多個程序

  • February 20, 2020

我有一個冗長的數據管道,可以導入 CSV,創建一系列依賴視圖,然後使用COPYCSV 導出結果。這個過程執行良好,大約在 30-60 秒內完成。突然,當它到達複製命令時,這個過程開始執行得慢得多。執行在我的使用者名下SELECT usename, state, query FROM pg_stat_activity;顯示三個相同的活動COPY命令。該過程最終會完成,但現在最多需要 20 分鐘或更長時間。除了更改一些初始子設置外,數據保持不變。沒有其他人在使用此數據庫,但集群上有其他使用者。

有沒有人遇到過這種行為?有誰知道什麼可能導致COPY手術突然變慢?

Postgres 11.6,RHEL 7

你沒有給我們太多的東西。比如,查詢是什麼?pg_stat_activity 的其他列顯示了什麼?作業系統命令“top”顯示什麼?

我在考慮並行工作者,但並行工作者程序直到 v13 才會在 pg_stat_activity 中顯示自己的行。所以我認為最有可能改變的是您的工作流程現在出於未知原因同時啟動多個 COPY 命令。你能加快數據庫的日誌記錄嗎(log_statement=‘all’, log_connections=‘on’)?

您是否定期啟動管道(從 cron 等)?這三個相同查詢中的兩個可能是之前執行的查詢,但仍未完成。

您還可以從作業系統中選擇query_startpg_stat_activity或檢查輸出。top

引用自:https://dba.stackexchange.com/questions/260069