Timescale Cloud:性能、规模、企业级

自托管产品

MST

使用 TimescaleDB 自动化框架调度的作业会定期在后台工作器中运行。您可以使用 `alter_job` 函数更改这些作业的调度。要修改现有作业,请通过 `job_id` 引用它。`job_id` 运行给定作业,其当前调度可在 `timescaledb_information.jobs` 视图中找到,该视图列出了所有已调度作业的信息,以及 `timescaledb_information.job_stats`。`job_stats` 视图还提供了有关每个作业上次运行时间以及其他有用统计数据的信息,可用于决定新的调度。

名称类型描述
job_idINTEGER要修改的策略作业的 ID
名称类型描述
schedule_intervalINTERVAL作业运行的时间间隔。默认为 24 小时。
max_runtimeINTERVAL后台工作器调度程序允许作业运行的最大时间,超过该时间作业将被停止。
max_retriesINTEGER如果作业失败,重试的次数。
retry_periodINTERVAL调度程序在作业失败后重试之间等待的时间。
scheduledBOOLEAN设置为 `FALSE` 可将此作业从后台作业中排除。
configJSONB作业特定的配置,在作业运行时传递给函数。这包括
  • `verbose_log`:布尔值,默认为 `false`。在运行压缩策略时启用详细日志输出。
  • `maxchunks_to_compress`:整数,默认为 `0`(无限制)。策略运行期间要压缩的最大分块数。
  • `recompress`:布尔值,默认为 `true`。重新压缩部分压缩的分块。
  • `compress_after`:请参阅 `add_compression_policy`。
  • `compress_created_before`:请参阅 `add_compression_policy`。
  • `hypercore_use_access_method`:布尔值,默认为 `false`。使用 hypercore TAM 压缩分块。抢先体验:TimescaleDB v2.18.0
  • next_startTIMESTAMPTZ下一次运行作业的时间。通过将此值设置为 `infinity` 可以暂停作业,通过将其设置为 `now()` 可以重新启动作业。
    if_existsBOOLEAN如果作业不存在,设置为 `true` 将发出通知而不是错误。默认为 false。
    check_configREGPROC一个函数,它接受一个参数,即 `JSONB` `config` 结构。如果配置无效,该函数应该引发错误;否则,返回空。可用于在更新作业时验证配置。`check_config` 的值只允许函数,不允许过程。
    fixed_scheduleBOOLEAN要启用固定调度作业运行,请设置为 `TRUE`。
    initial_startTIMESTAMPTZ设置 `fixed_schedule` 作业运行的开始时间。例如,`19:10:25-07`。
    timezoneTEXT解决时钟从夏令时变为标准时间时的1小时开始时间偏移。例如,`America/Sao_Paulo`。

    当作业开始时,`next_start` 参数被设置为 `infinity`。这可以防止作业在运行时尝试再次启动。当作业完成时,无论作业是否成功,该参数都会自动更新为下一个计算出的开始时间。

    请注意,对于固定调度作业,更改 `next_start` 值仅对作业的下一次执行有效。在下一次执行时,它将自动恢复到调度时间。

    类型描述
    job_idINTEGER正在修改的作业的 ID
    schedule_intervalINTERVAL作业运行的时间间隔。默认为 24 小时
    max_runtimeINTERVAL后台工作器调度程序允许作业运行的最大时间,超过该时间作业将被停止
    max_retriesINTEGER如果作业失败,重试的次数
    retry_periodINTERVAL调度程序在作业失败后重试之间等待的时间
    scheduledBOOLEAN如果作业由 TimescaleDB 调度程序执行,则返回 `true`
    configJSONB作业特定的配置,在作业运行时传递给函数
    next_startTIMESTAMPTZ下次运行作业的时间
    check_configTEXT用于验证更新的作业配置的函数

    重新调度作业 ID `1000`,使其每两天运行一次

    SELECT alter_job(1000, schedule_interval => INTERVAL '2 days');

    禁用对 `conditions` 超表上的压缩策略的调度

    SELECT alter_job(job_id, scheduled => false)
    FROM timescaledb_information.jobs
    WHERE 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 分钟,以便操作员有足够的时间在另一次崩溃之前禁用它。

    关键词

    此页面有疑问?报告问题 或 编辑此页面 在 GitHub。