Timescale Cloud:性能、规模、企业级
自托管产品
MST
使用 TimescaleDB 自动化框架调度的作业会定期在后台工作器中运行。您可以使用 `alter_job` 函数更改这些作业的调度。要修改现有作业,请通过 `job_id` 引用它。`job_id` 运行给定作业,其当前调度可在 `timescaledb_information.jobs` 视图中找到,该视图列出了所有已调度作业的信息,以及 `timescaledb_information.job_stats`。`job_stats` 视图还提供了有关每个作业上次运行时间以及其他有用统计数据的信息,可用于决定新的调度。
名称 | 类型 | 描述 |
---|---|---|
job_id | INTEGER | 要修改的策略作业的 ID |
名称 | 类型 | 描述 |
---|---|---|
schedule_interval | INTERVAL | 作业运行的时间间隔。默认为 24 小时。 |
max_runtime | INTERVAL | 后台工作器调度程序允许作业运行的最大时间,超过该时间作业将被停止。 |
max_retries | INTEGER | 如果作业失败,重试的次数。 |
retry_period | INTERVAL | 调度程序在作业失败后重试之间等待的时间。 |
scheduled | BOOLEAN | 设置为 `FALSE` 可将此作业从后台作业中排除。 |
config | JSONB | 作业特定的配置,在作业运行时传递给函数。这包括 |
next_start | TIMESTAMPTZ | 下一次运行作业的时间。通过将此值设置为 `infinity` 可以暂停作业,通过将其设置为 `now()` 可以重新启动作业。 |
if_exists | BOOLEAN | 如果作业不存在,设置为 `true` 将发出通知而不是错误。默认为 false。 |
check_config | REGPROC | 一个函数,它接受一个参数,即 `JSONB` `config` 结构。如果配置无效,该函数应该引发错误;否则,返回空。可用于在更新作业时验证配置。`check_config` 的值只允许函数,不允许过程。 |
fixed_schedule | BOOLEAN | 要启用固定调度作业运行,请设置为 `TRUE`。 |
initial_start | TIMESTAMPTZ | 设置 `fixed_schedule` 作业运行的开始时间。例如,`19:10:25-07`。 |
timezone | TEXT | 解决时钟从夏令时变为标准时间 |
当作业开始时,`next_start` 参数被设置为 `infinity`。这可以防止作业在运行时尝试再次启动。当作业完成时,无论作业是否成功,该参数都会自动更新为下一个计算出的开始时间。
请注意,对于固定调度作业,更改 `next_start` 值仅对作业的下一次执行有效。在下一次执行时,它将自动恢复到调度时间。
列 | 类型 | 描述 |
---|---|---|
job_id | INTEGER | 正在修改的作业的 ID |
schedule_interval | INTERVAL | 作业运行的时间间隔。默认为 24 小时 |
max_runtime | INTERVAL | 后台工作器调度程序允许作业运行的最大时间,超过该时间作业将被停止 |
max_retries | INTEGER | 如果作业失败,重试的次数 |
retry_period | INTERVAL | 调度程序在作业失败后重试之间等待的时间 |
scheduled | BOOLEAN | 如果作业由 TimescaleDB 调度程序执行,则返回 `true` |
config | JSONB | 作业特定的配置,在作业运行时传递给函数 |
next_start | TIMESTAMPTZ | 下次运行作业的时间 |
check_config | TEXT | 用于验证更新的作业配置的函数 |
重新调度作业 ID `1000`,使其每两天运行一次
SELECT alter_job(1000, schedule_interval => INTERVAL '2 days');
禁用对 `conditions` 超表上的压缩策略的调度
SELECT alter_job(job_id, scheduled => false)FROM timescaledb_information.jobsWHERE proc_name = 'policy_compression' AND hypertable_name = 'conditions'
重新调度连续聚合作业 ID `1000`,使其下次运行时间为 2020 年 3 月 15 日 9:00:00
SELECT alter_job(1000, next_start => '2020-03-15 09:00:00.0+00');
当作业运行导致运行时失败时,下次启动作业的时间将同时考虑其 `retry_period` 和 `schedule_interval` 进行计算。`next_start` 时间使用以下公式计算:
next_start = finish_time + consecutive_failures * retry_period ± jitter
其中添加了抖动(± 13%)以避免“惊群”效应。
注意
为确保 `next_start` 时间不会无限期推迟或产生过大而超出范围的时间戳,其上限设置为 `5*schedule_interval`。此外,不考虑超过 20 次连续失败,因此如果连续失败次数更高,则乘以 20。
此外,对于固定调度作业,系统确保如果下次开始时间(按指定方式计算)超过下次预定执行时间,作业将在下一个预定槽位再次执行,而不是之后。这确保了作业不会错过预定执行。
运行时失败(不会导致作业崩溃)和作业崩溃之间存在区别。在作业崩溃的情况下,下次启动计算遵循相同的公式,但总是至少在作业上次完成之后 5 分钟,以便操作员有足够的时间在另一次崩溃之前禁用它。
关键词