快速入门
作业名称区分大小写,创建后无法编辑。
尝试创建第二个同名(区分大小写)的作业会覆盖第一个作业。
安排作业#
只要您的 Postgres 版本为 15.1.1.61 或更高版本,您就可以在作业计划间隔中输入秒数。
编辑作业#
- 前往 作业 部分并找到您想要编辑的作业。
- 点击作业右侧的三个垂直点菜单,然后点击
编辑 cron 作业。 - 进行更改,然后点击
保存 cron 作业。
激活/停用作业#
- 前往 作业 部分并找到您想要取消计划的作业。
- 切换作业名称旁边的
活动/非活动开关。
取消安排作业#
- 前往 作业 部分并找到您想要删除的作业。
- 点击作业右侧的三个垂直点菜单,然后点击
删除 cron 作业。 - 通过输入作业名称确认删除。
检查作业运行情况#
- 前往 作业 部分并找到您想要查看运行情况的作业。
- 点击作业名称旁边的
历史记录按钮。
示例#
每周删除数据#
每周六凌晨 3:30(GMT)删除旧数据
1select cron.schedule (2 'saturday-cleanup', -- name of the cron job3 '30 3 * * 6', -- Saturday at 3:30AM (GMT)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');每 5 分钟调用一次数据库函数#
创建一个 hello_world() 数据库函数,然后每 5 分钟调用一次
1select cron.schedule('call-db-function', '*/5 * * * *', 'SELECT hello_world()');调用数据库存储过程#
要使用存储过程,您可以像这样调用它
1select cron.schedule('call-db-procedure', '*/5 * * * *', 'CALL my_procedure()');每 30 秒调用一次 Supabase Edge 函数#
每 30 秒向 Supabase Edge 函数发送 POST 请求
1select2 cron.schedule(3 'invoke-function-every-half-minute',4 '30 seconds',5 $$6 select7 net.http_post(8 url:='https://project-ref.supabase.co/functions/v1/function-name',9 headers:=jsonb_build_object('Content-Type','application/json', 'Authorization', 'Bearer ' || 'YOUR_ANON_KEY'),10 body:=jsonb_build_object('time', now() ),11 timeout_milliseconds:=500012 ) as request_id;13 $$14 );这需要启用 pg_net 扩展。
警告:安排系统维护#
在设置用于系统维护任务的作业时,请务必小心,因为它们可能会产生意想不到的后果。
例如,安排一个命令来终止空闲连接,使用 pg_terminate_backend(pid) 可能会破坏关键后台进程,例如夜间备份。通常,存在一个 Postgres 设置,例如 idle_session_timeout,可以在不冒风险的情况下执行这些常见的维护任务。
如果您不确定是否适用于您的用例,请联系 Supabase 支持。