定期的にストアドプロシージャを呼び出したいのですが。 Oracleでは、このためのジョブを作成します。 Postgresqlが外部ツール(cronなど)とPgAgentを使用することでこれをうまく模倣できることを発見しました。
外部ツールを使用しない「内部」代替手段を知っていますか?
~/.pgpass
)。Postgresql 8.
Linux RedHat 64ビット
(執筆時点で)間もなくリリースされるPostgreSQL 10または現在のPostgreSQL 9.6(8.3のような古いリリースではない)を実行していたとしても、組み込みのタスクスケジューラはまだありません。
PgAgentや外部cronジョブなどが必要ですが、便利な回避策はありません。
9.3で導入されたバックグラウンドワーカー機能により、PgAgentのようなツールを後のリリースでPostgreSQLコアに移動できるようになるはずですが、まだ実行されていません。 9.3でも、cronまたはpgagentを実行する必要があります。
数人がバックグラウンドワーカーベースのスケジューラで作業しており、それを支援する機能を提供するパッチがいくつか来ています。しかし、PostgreSQL 10の時点では、まだ広く採用されている高品質のスケジューラはなく、ほとんどの人がcron/msタスクスケジューラ/などを使用しています。
バージョンポリシー もご覧ください。あなたは時代遅れでサポートされていないリリースを実行しています。
PostgreSQL 9.5以降では、 pg_cron 拡張機能を使用できます。これは、共有ライブラリとしてPostgreSQLにロードされます。
設定後、ジョブの作成は非常に簡単です。
SELECT cron.schedule('30 3 * * 6', $$DELETE FROM events WHERE event_time < now() - interval '1 week'$$);
これにより、指定したcronスケジュールに従って削除コマンドが実行されます。 @reboot
を使用して、サーバーの再起動時にジョブをスケジュールすることもできます。ホットスタンバイを昇格すると、pg_cronは自動的にジョブの実行を開始します。
.pgpassを使用する代わりに、pg_hba.confでcronユーザーにlocalhostアクセスを提供できます。