Timescale 云:性能、规模、企业级
自托管产品
MST
Timescale 中的作业是自定义函数或过程,按照您定义的时间表运行。本页解释如何创建、测试、修改和删除作业。
要遵循本页的步骤,您需要
此过程也适用于自托管 TimescaleDB。
要创建作业,请创建您希望服务执行的函数或过程
,然后将其设置为按计划运行。
用您选择的语言定义函数或过程
将其包装在
CREATE
语句中CREATE FUNCTION <function_name> (job_id INT DEFAULT NULL, config JSONB DEFAULT NULL)RETURNS VOIDDECLARE<declaration>;BEGIN<function_body>;END;$<variable_name>$ LANGUAGE <language>;例如,要创建一个在服务中重新索引表的函数
CREATE FUNCTION reindex_mytable(job_id INT DEFAULT NULL, config JSONB DEFAULT NULL)RETURNS VOIDAS $$BEGINREINDEX TABLE mytable;END;$$ LANGUAGE plpgsql;job_id
和config
是函数签名中必需的参数。这会返回CREATE FUNCTION
以指示函数已成功创建。调用函数进行验证
例如
select reindex_mytable();结果如下
reindex_mytable-----------------(1 row)使用
add_job
注册您的作业传入作业的名称、您希望它运行的时间表以及配置的内容。对于
config
值,如果您不需要任何特殊配置参数,请设置为NULL
。例如,要每小时运行reindex_mytable
函数SELECT add_job('reindex_mytable', '1h', config => NULL);该调用返回一个
job_id
并将其与config
一起存储在 Timescale 目录中。作业按照您设置的时间表运行。您也可以通过传入
job_id
使用run_job
手动运行它。当作业运行时,job_id
和config
将作为参数传入。验证作业
使用
timescaledb_information.jobs
列出所有当前注册的作业SELECT * FROM timescaledb_information.jobs;结果如下
job_id | application_name | schedule_interval | max_runtime | max_retries | retry_period | proc_schema | proc_name | owner | scheduled | config | next_start | hypertable_schema | hypertable_name--------+----------------------------+-------------------+-------------+-------------+--------------+-----------------------+------------------+-----------+-----------+------------------------+-------------------------------+-------------------+-----------------1 | Telemetry Reporter [1] | 24:00:00 | 00:01:40 | -1 | 01:00:00 | _timescaledb_internal | policy_telemetry | postgres | t | | 2022-08-18 06:26:39.524065+00 | |1000 | User-Defined Action [1000] | 01:00:00 | 00:00:00 | -1 | 00:05:00 | public | reindex_mytable | tsdbadmin | t | | 2022-08-17 07:17:24.831698+00 | |(2 rows)
要调试作业,请提高日志级别并在前台使用run_job
手动运行作业。由于 run_job
是一个存储过程而不是函数,因此请使用CALL
而不是
SELECT
来运行它。
将最低日志级别设置为
DEBUG1
SET client_min_messages TO DEBUG1;运行作业
将
1000
替换为您的job_id
CALL run_job(1000);
使用alter_job
修改现有作业。您可以更改配置以及作业运行的时间表。
更改作业的配置
要替换作业的整个 JSON 配置,请使用新的
config
对象调用alter_job
。例如,替换 ID 为1000
的作业的 JSON 配置SELECT alter_job(1000, config => '{"hypertable":"metrics"}');关闭作业调度
要关闭作业的自动调度,请调用
alter_job
并将scheduled
设置为false
。您仍然可以使用run_job
手动运行作业。例如,关闭 ID 为1000
的作业的调度SELECT alter_job(1000, scheduled => false);重新启用作业的自动调度
要重新启用作业的自动调度,请调用
alter_job
并将scheduled
设置为true
。例如,重新启用 ID 为1000
的作业的调度SELECT alter_job(1000, scheduled => true);使用
delete_job
删除作业例如,要删除 ID 为
1000
的作业SELECT delete_job(1000);
关键词
本页发现问题?报告问题 或 在 GitHub 上编辑此页面
。