Postgresql
計算對不同表的寫入次數
我最近在 postgresql 數據庫中為時間點恢復設置了持續存檔,但存檔的增長速度出人意料(每天數十 GB)。數據庫是幾 GB,其中大部分是靜態的。在我看來,我們可能有應用程序的某些部分過於激進地寫入數據庫,可能會頻繁更新大量行,從而導致不必要的磁碟負載。
有什麼方法可以詢問數據庫或分析 WAL 文件,找出哪些表寫入最多(行刪除、添加或更新),最好以字節為單位?這將有助於找出磁碟負載的來源。
此資訊可通過Statistics Collector獲得。
您要查找的資訊儲存在pg_stat_bgwriter或pg_stat_database中。也許您還對pg_stat_all_tables中顯示插入、更新或刪除多少元組的值感興趣。
所有這些視圖都顯示自實例啟動或自上次
pg_stat_reset()
呼叫以來的值。如果您想監控隨時間的變化,您需要對這些視圖進行採樣並將值儲存在某處(例如,文本文件或只是另一個具有時間戳以指示採樣時間的表)。