pg_cron: 作业调度

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

使用方法

启用扩展

  1. 进入仪表板中的数据库页面。
  2. 点击侧边栏中的扩展
  3. 搜索 "pg_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)删除旧数据:

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

每天运行一次VACUUM#

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

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

取消作业计划

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

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

资源