web-dev-qa-db-ja.com

PostgreSQLのAutovacuumがUNIX上で実行されているかどうかを確認するにはどうすればよいですか?

Postgres 9.xでautovacuumデーモンが実行され、データベースクラスターを維持していることを確認するにはどうすればよいですか?

43
Clint Pachl

PostgreSQL 9.3

Autovacuumが実行されているかどうかを判断する

これは、UNIX上のPostgres 9.3に固有です。 Windowsの場合、これを参照してください question

Postgresシステムテーブルのクエリ

SELECT
  schemaname, relname,
  last_vacuum, last_autovacuum,
  vacuum_count, autovacuum_count  -- not available on 9.0 and earlier
FROM pg_stat_user_tables;

Grepシステムプロセスステータス

$ ps -axww | grep autovacuum
24352 ??  Ss      1:05.33 postgres: autovacuum launcher process  (postgres)    

Grep Postgresログ

# grep autovacuum /var/log/postgresql
LOG:  autovacuum launcher started
LOG:  autovacuum launcher shutting down

autovacuumアクティビティについて詳しく知りたい場合は、log_min_messagesからDEBUG1..DEBUG5。 SQLコマンドVACUUM VERBOSEは、ログレベルINFOで情報を出力します。


Autovacuum Daemonに関して、Posgresのドキュメントは次のように述べています。

デフォルト構成では、自動バキュームが有効になっており、関連する構成パラメーターが適切に設定されています。

参照:

76
Clint Pachl

私は使用しています:

select count(*) from pg_stat_activity where query like 'autovacuum:%';

collectdでは、同時に実行されているautovacuumの数を把握します。

次のようなセキュリティ機能を作成する必要がある場合があります。

CREATE OR REPLACE FUNCTION public.pg_autovacuum_count() RETURNS bigint
AS 'select count(*) from pg_stat_activity where query like ''autovacuum:%'';'
LANGUAGE SQL
STABLE
SECURITY DEFINER;

collectdから呼び出します。

以前のPostgresでは、「クエリ」は「current_query」でしたので、何が機能するかに応じて変更してください。

14
Charly Koza

Pg_activityを実行して、データベースで現在実行中のクエリを確認することもできます。とにかくveryが便利なので、たいていの場合これを実行したままターミナルを開いたままにします。

0
Philip Snyder