快速入门
作业名称区分大小写,且创建后不可编辑。
尝试创建同名(包括大小写)的第二个作业将会覆盖第一个作业。
定时任务设置
只要您的Postgres版本在15.1.1.61或更高,就可以为任务计划间隔设置秒级精度。
编辑任务
- 进入任务页面,找到您想要编辑的任务。
- 点击任务右侧的三个垂直点菜单,选择
编辑定时任务
。 - 进行修改后点击
保存定时任务
。
激活/停用任务
- 进入任务页面,找到您想要取消调度的任务。
- 切换任务名称旁边的
激活
/停用
开关。
取消任务调度
- 进入任务页面,找到您想要删除的任务。
- 点击任务右侧的三个垂直点菜单,选择
删除定时任务
。 - 输入任务名称确认删除。
检查任务运行情况
- 进入任务部分,找到您想查看运行记录的任务
- 点击任务名称旁边的
历史记录
按钮
示例
每周删除数据
每周六凌晨3:30(GMT时间)删除旧数据:
12345select cron.schedule ( 'saturday-cleanup', -- 定时任务名称 '30 3 * * 6', -- 每周六3:30AM(GMT时间) $$ delete from events where event_time < now() - interval '1 week' $$);
每日执行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边缘函数
每30秒向Supabase边缘函数发起POST请求:
1234567891011121314select cron.schedule( 'invoke-function-every-half-minute', '30 seconds', $$ select net.http_post( url:='https://project-ref.supabase.co/functions/v1/function-name', headers:=jsonb_build_object('Content-Type','application/json', 'Authorization', 'Bearer ' || 'YOUR_ANON_KEY'), body:=jsonb_build_object('time', now() ), timeout_milliseconds:=5000 ) as request_id; $$ );
此功能需要启用pg_net
扩展。
注意:系统维护任务调度
在设置系统维护任务的定时作业时要格外小心,因为它们可能会产生意外后果。
例如,使用pg_terminate_backend(pid)
调度终止空闲连接的命令可能会中断关键的后台进程(如夜间备份)。通常,Postgres已有现成的设置(如idle_session_timeout
)可以安全地执行这些常见维护任务。
如果您不确定是否适用于您的使用场景,请联系Supabase支持团队。