Postgresql
如何為特定的數據庫查詢劃分日誌文件?
目前,我的數據庫有幾個觸發器,用於在更新特定數量的列時執行一些(不是全部)表。我會跟踪表中布爾列上這些行的觸發器。
我希望能夠將 UPDATE 和 INSERT 查詢以及來自它們的錯誤/警告記錄到我的 postgresql 伺服器中的不同文件中,因為單個日誌文件可能會變得非常大。
我已經想到了解決這個問題的幾種方法,並且正在尋找比這些更好的方法;
- 讓觸發器(plpython3)僅在被呼叫時創建單獨的日誌文件(不是很多,但它們將數百萬行插入到不同的表中。
- 編寫將日誌資訊插入另一個表的附加觸發器(通過顯式方式或單個 JSON 列)
感謝您的時間和回答!
每個數據庫集群只有一個 PostgreSQL 日誌文件,因此您不能開箱即用。
添加記錄到文件的觸發器是一種選擇,但觸發器(和記錄本身)會增加顯著的性能成本,肯定比 PostgreSQL 記錄本身更多。
我要探索的路線是這樣的:
- 嘗試使用不同的數據庫使用者執行您想要記錄的操作。如果這並不容易,請發揮創造力:也許您可以在調試模式下的關鍵點執行
SET ROLE
/命令以成為不同的使用者。RESET ROLE
- 僅為該使用者啟用日誌記錄:
ALTER ROLE myuser SET log_min_duration_statement = 0;
然後評估日誌會更容易,因為它會更小。