據的Postgres pg_stat_statements文檔:使用pg_stat_statements收集大型統計集?
該模塊需要成比例 pg_stat_statements.max附加共享內存。請注意,只要加載了 模塊,即使將pg_stat_statements.track設置爲none,也會消耗該內存。
和也:
代表查詢的文本保存在外部磁盤文件, 不消耗共享內存。因此,即使很長的查詢文本 可以成功存儲。但是,如果很多長查詢文本累積了 ,那麼外部文件可能會變得難以管理地變大。
從這些不清楚高pg_stat_statements.max
的實際內存成本是什麼 - 比如在100k或500k(默認值是5k)。設定高的水平是否安全,可能是這種高水平的負面影響?通過logstash/fluentd將統計信息彙總到外部數據庫是否是超過特定大小的首選方法?
我正在運行大量物化視圖,因此需要很高的'pg_stat_statements.max' :)不要太擔心硬盤空間,主要是內存使用量會降低實際查詢性能。 >這是我自己做的。如果您可以分享一些關於首選設置的信息,以及您是如何處理從統計信息收集中卸載主數據庫的? – user3467349
大文件威脅不是用於硬盤空間,而是用於分析它的時間。嘗試查詢pg_stat_statements作爲超級用戶(讀取語句表單文件),而不是超級用戶(沒有語句)。如果你有大文件,時間差異顯着。 –
我所做的是一個修補程序樣式設置 - 不是最佳的,但是這裏是:我已經將最大值設置爲1000(而不是最低值5次)。我有一份工作,將pg_stat_statements複製到其他數據庫與dblink(沒有查詢,但與它的散列),另一個作業發送散列和查詢到不同的表(與FK)。和另一個保存當前執行計劃的作業,並使用散列(FK)將其發送到第三個表。通過這種方式,我可以比較執行時間和計劃是否隨時間發生變化......(Oracle在CBO中內置了類似的東西) –