pg_cron扩展是PostgreSQL的一个简单的基于cron的工作调度器,在数据库内运行。

使用方法

启用扩展

语法

该计划使用标准cron语法,其中* 表示“每个时间段运行”,而特定数字表示“但仅在此时”:

   ┌───────────── min (0 - 59)
 │ ┌────────────── hour (0 - 23)
 │ │ ┌─────────────── day of month (1 - 31)
 │ │ │ ┌──────────────── month (1 - 12)
 │ │ │ │ ┌───────────────── day of week (0 - 6) (0 to 6 are Sunday to
 │ │ │ │ │                  Saturday, or use names; 7 is also Sunday)
 │ │ │ │ │
 │ │ │ │ │
 * * * * *
  

示例

每周删除数据

在星期六凌晨3:30(GMT)删除旧数据:

  select cron.schedule (
    'webhook-every-minute', -- name of the cron job
    '* * * * *', -- every minute
    $$ delete from events where event_time < now() - interval '1 week' $$
);
  

每天运行一次VACUUM

每天凌晨3:00(GMT)运行VACUUM

  SELECT cron.schedule('nightly-vacuum', '0 3 * * *', 'VACUUM');
  

取消作业计划

取消了一项名为'nightly-vacuum'的工作计划:

  SELECT cron.unschedule('nightly-vacuum');
  

资源