Postgresql

如何為特定的數據庫查詢劃分日誌文件?

  • May 29, 2019

目前,我的數據庫有幾個觸發器,用於在更新特定數量的列時執行一些(不是全部)表。我會跟踪表中布爾列上這些行的觸發器。

我希望能夠將 UPDATE 和 INSERT 查詢以及來自它們的錯誤/警告記錄到我的 postgresql 伺服器中的不同文件中,因為單個日誌文件可能會變得非常大。

我已經想到了解決這個問題的幾種方法,並且正在尋找比這些更好的方法;

  • 讓觸發器(plpython3)僅在被呼叫時創建單獨的日誌文件(不是很多,但它們將數百萬行插入到不同的表中。
  • 編寫將日誌資訊插入另一個表的附加觸發器(通過顯式方式或單個 JSON 列)

感謝您的時間和回答!

每個數據庫集群只有一個 PostgreSQL 日誌文件,因此您不能開箱即用。

添加記錄到文件的觸發器是一種選擇,但觸發器(和記錄本身)會增加顯著的性能成本,肯定比 PostgreSQL 記錄本身更多。

我要探索的路線是這樣的:

  • 嘗試使用不同的數據庫使用者執行您想要記錄的操作。如果這並不容易,請發揮創造力:也許您可以在調試模式下的關鍵點執行SET ROLE/命令以成為不同的使用者。RESET ROLE
  • 僅為該使用者啟用日誌記錄:
ALTER ROLE myuser SET log_min_duration_statement = 0;

然後評估日誌會更容易,因為它會更小。

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