postgresql 查詢慢sql之四: pg_stat_*、pg_statio_*
阿新 • • 發佈:2018-12-16
pg_stat_為統計收集檢視, 這裡pg_stat_ 是不包含 pg_stat_statements 這個 extension.其實統計資訊這些都是記錄到具體表,還需要根據反向查詢到 sql。
配置統計收集
因為統計收集給查詢執行增加了一些負荷,系統可以被配置為收集或不收集資訊。這由配置引數控制,它們通常在postgresql.conf中設定(關於設定配置引數的細節請見第 19 章)。
引數 track_activities 允許監控當前被任意伺服器程序執行的命令。 引數 track_counts 控制是否收集關於表和索引訪問的統計資訊。 引數 track_functions 啟用對使用者定義函式使用的跟蹤。 引數 track_io_timing 啟用對塊讀寫次數的監控。
$ vi postgresql.conf #------------------------------------------------------------------------------ # RUNTIME STATISTICS #------------------------------------------------------------------------------ # - Query/Index Statistics Collector - track_activities = on track_counts = on track_io_timing = on track_functions = none # none, pl, all track_activity_query_size = 2048 # (change requires restart) #stats_temp_directory = '/var/run/postgresql/9.6-main.pg_stat_tmp' stats_temp_directory = 'pg_stat_tmp' # - Statistics Monitoring - #log_parser_stats = off #log_planner_stats = off #log_executor_stats = off #log_statement_stats = off
重置
postgresql 提供了4個重置功能,看名字都很容易理解了。
pg_stat_reset() void 把用於當前資料庫的所有統計計數器重置為零(預設要求超級使用者許可權,但這個函式的 EXECUTE 可以被授予給其他人)。 pg_stat_reset_shared(text) void 把某些集簇範圍的統計計數器重置為零,具體哪些取決於引數(預設要求超級使用者許可權,但這個函式的 EXECUTE 可以被授予給其他人)。 呼叫pg_stat_reset_shared('bgwriter')把pg_stat_bgwriter 檢視中顯示的所有計數器清零。呼叫pg_stat_reset_shared('archiver') 將會把pg_stat_archiver檢視中展示的所有計數器清零。 pg_stat_reset_single_table_counters(oid) void 把當前資料庫中用於單個表或索引的統計資料重置為零(預設要求超級使用者許可權,但這個函式的 EXECUTE 可以被授予給其他人) pg_stat_reset_single_function_counters(oid) void 把當前資料庫中用於單個函式的統計資訊重置為零(預設要求超級使用者許可權,但這個函式的 EXECUTE 可以被授予給其他人)
查詢 top sql
top seq scan
seq read 為全表掃描,需要關注的是大表的seq read
select * from pg_stat_user_tables where n_live_tup > 100000 and seq_scan > 0 order by seq_tup_read desc limit 20;