56

Postgres 9.x の自動バキューム デーモンが実行され、データベース クラスタが維持されているかどうかを確認するにはどうすればよいでしょうか?

4

3 に答える 3

90

PostgreSQL 9.3

自動バキュームが実行されているかどうかを確認する

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

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)    

Postgres ログの grep

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

自動バキュームアクティビティについて詳しく知りたい場合は、 に設定log_min_messagesDEBUG1..DEBUG5ます。SQL コマンドVACUUM VERBOSEは、ログ レベルで情報を出力しますINFO


Autovacuum Daemon に関して、Posgres のドキュメントには次のように記載されています。

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

関連項目:

于 2013-11-07T01:44:32.830 に答える
17

私は使用しています:

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

collectd で、同時に実行されている自動バキュームの数を確認します。

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

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 では、「query」は「current_query」だったので、機能に応じて変更してください。

于 2014-07-29T09:57:12.330 に答える
0

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

于 2016-03-02T19:35:06.193 に答える