Timeudb API 参考

 

Timeudb 提供了许多 SQL 函数和视图,方便管理数据库的时序数据。请参阅下面的 API 的接口。

 

create_hypertable() 创建超表

从 Unvdb 表创建 Timeudb 超表,该 Unvdb 表必须为空表

[必需参数]

名字 类型 描述
relation REGCLASS 要转换为超表的名称。
time_column_name REGCLASS 包含时间值的列的名称,或者要分区的主列的名称。

[可选参数]

名字 类型 描述
partitioning_column REGCLASS 要作为哈希分区列的名称。
number_partitions INTEGER 要用于的哈希分区数,必须 > 0。
chunk_time_interval INTERVAL 每个区块的时间间隔,必须 > 0。
create_default_indexes BOOLEAN 是否在时间/分区列上创建默认索引。
if_not_exists BOOLEAN 如果表已转换为超表,则引发异常。
partitioning_func REGCLASS 用于计算值分区的函数。
associated_schema_name REGCLASS 内部超表的模式名称。
associated_table_prefix TEXT 内部超表块名称的前缀。
migrate_data BOOLEAN 设置为 TRUE 可将表中的任何现有数据迁移到新超表中的块。
time_partitioning_func REGCLASS 将不兼容的主时间列值转换为兼容的主时间列值的函数。

[返回]

类型 描述
hypertable_id INTEGER Timeudb 中超表的 ID。
schema_name TEXT 转换为超表的模式名称。
table_name TEXT 转换为超表的表名。
created BOOLEAN 如果创建了超表,则为 TRUE,如果未创建超表,则为 FALSE。

[使用示例]

创建示例表

CREATE TABLE conditions ( time TIMESTAMPTZ NOT NULL, location TEXT NOT NULL, temperature DOUBLE PRECISION NULL, humidity DOUBLE PRECISION NULL);

将表转换为超表,只进行时间分区

SELECT create_hypertable(’conditions’, ‘time’);

将表转换为超表,设置为 24 小时

SELECT create_hypertable(’conditions’, ‘time’, chunk_time_interval => 86400000000); SELECT create_hypertable(’conditions’, ‘time’, chunk_time_interval => INTERVAL ‘1 day’);

将表转换为超表。如果已经是超级表,不要发出警告

SELECT create_hypertable(’conditions’, ‘time’, if_not_exists => TRUE);

 

show_chunks() 显示分区块列表

获取与超表关联的分区块列表。

[必需参数]

名字 类型 描述
relation REGCLASS 超表的名称。

[可选参数]

名字 类型 描述
older_than ANY 早于此时间戳的任何块。
newer_than ANY 比此时间戳更新的任何块。
created_before ANY 应显示在此时间戳之前创建的任何块。
created_after ANY 应显示在此时间戳之后创建的任何块。

[使用示例]

获取超表所有分区块

SELECT show_chunks(’conditions’);

获取超表指定时间的分区块

SELECT show_chunks(’conditions’, older_than => INTERVAL ‘3 months’); SELECT show_chunks(’conditions’, created_before => INTERVAL ‘3 months’); SELECT show_chunks(’conditions’, created_after => INTERVAL ‘1 month’); SELECT show_chunks(’conditions’, older_than => DATE ‘2017-01-01’);

 

drop_chunks() 删除分区块

删除指定的分区块。

[必需参数]

名字 类型 描述
relation REGCLASS 超表的名称。

[可选参数]

名字 类型 描述
older_than ANY 早于此时间戳的任何块。
newer_than ANY 比此时间戳更新的任何块。
created_before ANY 在此时间戳之前创建的任何块。
created_after ANY 在此时间戳之后创建的任何块。
verbose BOOLEAN 设置为 true 将显示有关重新排序命令进度的消息。

[使用示例]

删除超过 3 个月的所有块

SELECT drop_chunks(’conditions’, INTERVAL ‘3 months’);

指定时间段删除

SELECT drop_chunks(’conditions’, older_than => INTERVAL ‘3 months’); SELECT drop_chunks(’conditions’, created_before => INTERVAL ‘3 months’); SELECT drop_chunks(’conditions’, created_after => INTERVAL ‘1 month’); SELECT drop_chunks(’conditions’, older_than => DATE ‘2017-01-01’);

 

set_chunk_time_interval() 设置分区块时间间隔

设置新的间隔来创建新分区块,现有区块的时间间隔没有改变。

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称。
chunk_time_interval time 新区块的时间间隔。

[可选参数]

名字 类型 描述
dimension_name REGCLASS 要为其设置分区数的时间维度的名称。

[使用示例]

设置时间间隔为 24 小时

SELECT set_chunk_time_interval(’conditions’, INTERVAL ‘24 hours’); SELECT set_chunk_time_interval(’conditions’, 86400000000);

 

add_dimension() 创建超表

从 Timeudb 超表上增加其他分区

[必需参数]

名字 类型 描述
hypertable REGCLASS 要转换为超表的名称。
column_name TEXT 要分区的列的名称。

[可选参数]

名字 类型 描述
number_partitions INTEGER 要用于的哈希分区数,必须 > 0。
chunk_time_interval INTERVAL 每个区块的时间间隔,必须 > 0。
partitioning_func REGCLASS 用于计算分区的函数功能。
if_not_exists BOOLEAN 如果表已存在分区,则引发异常。

[返回]

类型 描述
dimension_id INTEGER 分区维度的内部 ID
schema_name TEXT 模式名称。
table_name TEXT 超表的名称。
column_name TEXT 分区维度的列名称
created BOOLEAN 如果成功,则为 TRUE,如果失败,则为 FALSE。

[使用示例]

先创建超表,再增加分区维度

SELECT create_hypertable(’conditions’, ‘time’); SELECT add_dimension(’conditions’, ‘location’, number_partitions => 4); SELECT add_dimension(’conditions’, ‘location’, number_partitions => 2, if_not_exists => true);

 

hypertable_size() 超表大小

获取超表的大小

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[返回]

类型 描述
hypertable_size BIGINT 超表的总空间,包括索引和 TOAST 数据

TOAST,全称是 The Oversized-Attribute Storage Technique, 超大属性存储技术

[使用示例]

获取超表的大小

SELECT hypertable_size(’conditions’); SELECT hypertable_name, hypertable_size(format(’%I.%I’, hypertable_schema, hypertable_name)::regclass) FROM timeudb_information.hypertables;

 

hypertable_index_size() 超表索引大小

获取超表索引的大小

[必需参数]

名字 类型 描述
index_name REGCLASS 超表索引的名称

[返回]

类型 描述
hypertable_index_size BIGINT 超表索引的总空间

[使用示例]

查看超表索引名称,并查看超表索引的大小

\d conditions SELECT hypertable_index_size(’conditions_time_idx’);

 

hypertable_detailed_size() 超表详细大小

获取超表详细的大小

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[返回]

类型 描述
table_bytes BIGINT 超表的主表大小
index_bytes BIGINT 超表的索引大小
toast_bytes BIGINT TOAST 数据大小
total_bytes BIGINT 超表的总空间,包括索引和 TOAST 数据

TOAST,全称是 The Oversized-Attribute Storage Technique, 超大属性存储技术

[使用示例]

查看超表的详细大小

SELECT * FROM hypertable_detailed_size(’conditions’);

 

chunks_detailed_size() 超表分区块的详细大小

获取超表分区块的详细大小

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[返回]

类型 描述
chunk_schema TEXT 分区块的模式名称
chunk_name TEXT 分区块的名称
table_bytes BIGINT 超表的主表大小
index_bytes BIGINT 超表的索引大小
toast_bytes BIGINT TOAST 数据大小
total_bytes BIGINT 超表的总空间,包括索引和 TOAST 数据

TOAST,全称是 The Oversized-Attribute Storage Technique, 超大属性存储技术

[使用示例]

查看超表分区块的详细大小

SELECT * FROM chunks_detailed_size(’conditions’);

 

attach_tablespace() 挂载表空间

将超表挂载到表空间

[必需参数]

名字 类型 描述
tablespace TEXT 要挂载的表空间名称
hypertable REGCLASS 超表的名称

[可选参数]

名字 类型 描述
if_not_attached BOOLEAN 如果表已挂载表空间,则引发异常。

[使用示例]

将超表挂载到表空间

SELECT attach_tablespace(’data1’, ‘conditions’); SELECT attach_tablespace(’data2’, ‘conditions’, if_not_attached => true);

 

detach_tablespace() 卸载表空间

卸载表空间

[必需参数]

名字 类型 描述
tablespace TEXT 要卸载的表空间名称

[可选参数]

名字 类型 描述
hypertable REGCLASS 超表的名称
if_attached BOOLEAN 如果表没有挂载表空间,则引发异常

[使用示例]

卸载表空间

SELECT detach_tablespace(’data1’, ‘conditions’); SELECT detach_tablespace(’data2’, ‘conditions’, if_attached => true);

卸载表空间的所有超表

SELECT detach_tablespace(’data1’);

 

detach_tablespaces() 卸载所有表空间

卸载所有表空间

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[使用示例]

卸载所有表空间

SELECT detach_tablespaces(’conditions’);

 

show_tablespaces() 显示所有表空间

显示所有表空间

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[使用示例]

显示所有表空间

SELECT * FROM show_tablespaces(’conditions’);

 

add_retention_policy() 增加数据保留策略

增加超表的数据保留策略

[必需参数]

名字 类型 描述
relation REGCLASS 超表的名称
drop_after INTERVAL or INTEGER 早于此时间间隔的分区块将被删除
schedule_interval INTERVAL 执行策略的时间的间隔
initial_start TIMESTAMPTZ 首次运行策略的时间
timezone TEXT 时区

[可选参数]

名字 类型 描述
if_not_exists BOOLEAN 设置以避免错误
drop_created_before INTERVAL 创建时间早于此的分区块将被删除

[返回]

类型 描述
job_id INTEGER 该策略的后台作业 ID

[使用示例]

增加超表的数据保留策略

SELECT add_retention_policy(’conditions’, drop_after => INTERVAL ‘6 months’); SELECT add_retention_policy(’conditions’, drop_created_before => INTERVAL ‘6 months’);

 

remove_retention_policy() 删除数据保留策略

删除超表的数据保留策略

[必需参数]

名字 类型 描述
relation REGCLASS 超表的名称

[可选参数]

名字 类型 描述
if_exists BOOLEAN 设置以避免错误

[返回]

类型 描述
job_id INTEGER 该策略的后台作业 ID

[使用示例]

删除超表的数据保留策略

SELECT remove_retention_policy(’conditions’);

 

ALTER TABLE(compression) 修改超表压缩属性

修改超表压缩属性

[必需参数]

名字 类型 描述
timeudb.compress BOOLEAN 打开或关闭表压缩

[可选参数]

名字 类型 描述
timeudb.compress_orderby TEXT 压缩的时间顺序,默认值为时间列的降序
timeudb.compress_segmentby TEXT 压缩列的列表
timeudb.compress_chunk_time_interval TEXT 压缩块时间间隔

[返回]

类型 描述
table_name TEXT 压缩的超表
column_name TEXT 用于排序的列
interval TEXT 压缩的时间间隔

[使用示例]

打开超表的压缩功能

ALTER TABLE conditions SET (timeudb.compress);

 

add_compression_policy() 增加压缩策略

增加超表的压缩策略

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称
compress_after INTERVAL or INTEGER 早于此时间间隔的分区块将被压缩

[可选参数]

名字 类型 描述
schedule_interval INTERVAL 执行压缩的时间间隔
initial_start TIMESTAMPTZ 首次运行策略的时间
timezone TEXT 时区
if_not_exists BOOLEAN 如果超表上已存在压缩策略,避免报错
compress_created_before INTERVAL 创建时间早于此的分区块将被压缩

[使用示例]

增加超表的压缩策略

SELECT add_compression_policy(’conditions’, INTERVAL ‘8 weeks’);

 

remove_compression_policy() 删除压缩策略

删除超表的压缩策略

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[可选参数]

名字 类型 描述
if_exists BOOLEAN 如果超表不存在压缩策略,避免报错

[使用示例]

删除超表的压缩策略

SELECT remove_compression_policy(’conditions’);

 

compress_chunk() 压缩分区块

压缩指定的分区块

[必需参数]

名字 类型 描述
chunk_name REGCLASS 分区块的名称

[可选参数]

名字 类型 描述
if_not_compressed BOOLEAN 如果已压缩,避免报错

[使用示例]

压缩指定的分区块

SELECT compress_chunk(’_timeudb_internal._hyper_2_1_chunk’);

 

decompress_chunk() 解压分区块

解压指定的分区块

[必需参数]

名字 类型 描述
chunk_name REGCLASS 分区块的名称

[可选参数]

名字 类型 描述
if_compressed BOOLEAN 如果未压缩,避免报错

[使用示例]

解压指定的分区块

SELECT decompress_chunk(’_timeudb_internal._hyper_2_1_chunk’);

 

hypertable_compression_stats() 获取超表压缩状态

获取超表压缩状态

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[返回]

类型 描述
total_chunks BIGINT 超表使用的分区块数
number_compressed_chunks INTEGER 超表当前压缩使用的分区块数
before_compression_table_bytes BIGINT 压缩前表的大小
before_compression_index_bytes BIGINT 压缩前索引的大小
before_compression_toast_bytes BIGINT 压缩前 TOAST 数据大小
before_compression_total_bytes BIGINT 压缩前超表的总大小
after_compression_table_bytes BIGINT 压缩后表的大小
after_compression_index_bytes BIGINT 压缩后索引的大小
after_compression_toast_bytes BIGINT 压缩后 TOAST 数据大小
after_compression_total_bytes BIGINT 压缩后超表的总大小

[使用示例]

获取超表压缩状态

SELECT * FROM hypertable_compression_stats(’conditions’);

 

chunk_compression_stats() 获取分区块压缩状态

获取分区块压缩状态

[必需参数]

名字 类型 描述
hypertable REGCLASS 超表的名称

[返回]

类型 描述
chunk_schema TEXT 分区块的模式名称
chunk_name TEXT 分区块的名称
compression_status TEXT 分区块的压缩状态
before_compression_table_bytes BIGINT 压缩前表的大小
before_compression_index_bytes BIGINT 压缩前索引的大小
before_compression_toast_bytes BIGINT 压缩前 TOAST 数据大小
before_compression_total_bytes BIGINT 压缩前分区块的总大小
after_compression_table_bytes BIGINT 压缩后表的大小
after_compression_index_bytes BIGINT 压缩后索引的大小
after_compression_toast_bytes BIGINT 压缩后 TOAST 数据大小
after_compression_total_bytes BIGINT 压缩后分区块的总大小

[使用示例]

获取分区块压缩状态

SELECT * FROM chunk_compression_stats(’conditions’);

 

add_job() 增加任务

增加任务

[必需参数]

名字 类型 描述
proc REGPROC 任务运行的函数或过程的名称
schedule_interval INTERVAL 任务运行间隔

[可选参数]

名字 类型 描述
config JSONB 任务的配置
initial_start TIMESTAMPTZ 第一次运行时间
scheduled BOOLEAN 是否自动运行
check_config REGPROC 检查配置函数
fixed_schedule BOOLEAN 是否固定计划
timezone TEXT 时区

[返回]

类型 描述
job_id INTEGER 任务ID

[使用示例]

增加任务

CREATE OR REPLACE PROCEDURE user_defined_action(job_id int, config jsonb) 
   LANGUAGE PLPGSQL AS
$$
BEGIN
  RAISE NOTICE 'Executing action % with config %', job_id, config;
END
$$;

SELECT add_job('user_defined_action','1h');

 

alter_job() 修改任务

修改任务

[必需参数]

名字 类型 描述
job_id INTEGER 修改的任务ID

[可选参数]

名字 类型 描述
schedule_interval INTERVAL 任务运行间隔
max_runtime INTERVAL 任务最大运行时间
max_retries INTEGER 失败时,最多尝试次数
retry_period INTERVAL 失败时,尝试间隔
scheduled BOOLEAN 是否自动运行
config JSONB 任务的配置
next_start TIMESTAMPTZ 下次开始时间
if_exists BOOLEAN 当不存在任务时,避免报错
check_config REGPROC 检查配置函数
fixed_schedule BOOLEAN 是否固定计划
initial_start TIMESTAMPTZ 第一次运行时间
timezone TEXT 时区

[返回]

类型 描述
job_id INTEGER 任务ID
schedule_interval INTERVAL 任务运行间隔
max_runtime INTERVAL 任务最大运行时间
max_retries INTEGER 失败时,最多尝试次数
retry_period INTERVAL 失败时,尝试间隔
scheduled BOOLEAN 是否自动运行
config JSONB 任务的配置
next_start TIMESTAMPTZ 下次开始时间
check_config TEXT 检查配置函数

[使用示例]

修改任务

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

 

delete_job() 删除任务

删除任务

[必需参数]

名字 类型 描述
job_id INTEGER 删除的任务ID

[使用示例]

删除任务

SELECT delete_job(1000);

 

run_job() 运行任务

运行任务

[必需参数]

名字 类型 描述
job_id INTEGER 直接运行的任务ID

[使用示例]

运行任务

SET client_min_messages TO DEBUG1; CALL run_job(1000);

 

timeudb_information.hypertables 超表信息视图

获取超表信息视图

[视图信息]

类型 描述
hypertable_schema TEXT 超表的模式名称
hypertable_name TEXT 超表的名称
owner TEXT 超表的用户
num_dimensions SMALLINT 超表的分区维度
num_chunks BIGINT 分区数量
compression_enabled BOOLEAN 是否为压缩表
is_distributed BOOLEAN 是否为分布表
tablespaces TEXT 挂载的表空间

[使用示例]

获取超表信息视图

SELECT * FROM timeudb_information.hypertables;

 

timeudb_information.dimensions 超表分区维度视图

获取超表分区维度视图

[视图信息]

类型 描述
hypertable_schema TEXT 超表的模式名称
hypertable_name TEXT 超表的名称
dimension_number BIGINT 分区维度编号
column_name TEXT 分区列名
column_type REGTYPE 分区列类型
dimension_type TEXT 维度类型
time_interval INTERVAL 时间间隔
integer_interval BIGINT 整数间隔
integer_now_func TEXT 分区函数
num_partitions SMALLINT 分区数量

[使用示例]

获取超表分区维度视图

SELECT * FROM timeudb_information.dimensions;

 

timeudb_information.chunks 分区块信息视图

获取分区块信息视图

[视图信息]

类型 描述
hypertable_schema TEXT 超表的模式名称
hypertable_name TEXT 超表的名称
chunk_schema TEXT 分区块的模式名称
chunk_name TEXT 分区块的名称
primary_dimension TEXT 主分区列的名称
primary_dimension_type REGTYPE 主分区列的类型
range_start TIMESTAMP WITH TIME ZONE 分区起始时间
range_end TIMESTAMP WITH TIME ZONE 分区结束时间
range_start_integer BIGINT 分区起始整数
range_end_integer BIGINT 分区结束整数
is_compressed BOOLEAN 是否压缩
chunk_tablespace TEXT 使用的表空间
chunk_creation_time TIMESTAMP WITH TIME ZONE 分区创建时间

[使用示例]

获取分区块信息视图

SELECT * FROM timeudb_information.chunks;

 

timeudb_information.compression_settings 压缩信息视图

获取压缩信息视图

[视图信息]

类型 描述
hypertable_schema TEXT 超表的模式名称
hypertable_name TEXT 超表的名称
attname TEXT 压缩设置中使用的列的名称
segmentby_column_index SMALLINT 压缩段的列位置
orderby_column_index SMALLINT 压缩的列位置
orderby_asc BOOLEAN 是否升序排序
orderby_nullsfirst BOOLEAN 是否 null 优先排列

[使用示例]

获取压缩信息视图

SELECT * FROM timeudb_information.compression_settings;

 

timeudb_information.hypertable_compression_settings 超表压缩设置视图

获取超表压缩设置视图

[视图信息]

类型 描述
hypertable REGCLASS 超表的名称
segmentby TEXT 分段压缩数据的列名称
orderby TEXT 排序信息
compress_interval_length TEXT 压缩的间隔

[使用示例]

获取超表压缩设置视图

SELECT * FROM timeudb_information.hypertable_compression_settings;

 

timeudb_information.jobs 任务视图

获取任务视图

[视图信息]

类型 描述
job_id INTEGER 任务ID
application_name TEXT 策略名称
schedule_interval INTERVAL 任务运行间隔
max_runtime INTERVAL 任务最大运行时间
max_retries INTEGER 失败时,最多尝试次数
retry_period INTERVAL 失败时,尝试间隔
proc_schema TEXT 执行任务函数的模式
proc_name TEXT 执行任务函数的名称
owner TEXT 任务所有者
scheduled BOOLEAN 是否自动运行
fixed_schedule BOOLEAN 是否为固定计划任务
config JSONB 传递给执行任务的参数
next_start TIMESTAMP WITH TIME ZONE 下次开始时间
initial_start TIMESTAMP WITH TIME ZONE 首次执行时间
hypertable_schema TEXT 超表的模式名称
hypertable_name TEXT 超表的名称
check_schema TEXT 验证函数的模式
check_name TEXT 验证函数的名称

[使用示例]

获取任务视图

SELECT * FROM timeudb_information.jobs;

 

timeudb_information.job_stats 任务状态视图

获取任务状态视图

[视图信息]

类型 描述
hypertable_schema TEXT 超表的模式名称
hypertable_name TEXT 超表的名称
job_id INTEGER 任务ID
last_run_started_at TIMESTAMP WITH TIME ZONE 上一次任务的开始时间
last_successful_finish TIMESTAMP WITH TIME ZONE 最后一次成功任务的结束时间
last_run_status TEXT 最后一次任务的状态
job_status TEXT 任务的当前状态
last_run_duration INTERVAL 最后一次任务的持续时间
next_start TIMESTAMP WITH TIME ZONE 下一次任务的开始时间
total_runs BIGINT 任务的总运行次数
total_successes BIGINT 任务的成功次数
total_failures BIGINT 任务的失败次数

[使用示例]

获取任务状态视图

SELECT * FROM timeudb_information.job_stats;

 

timeudb_information.job_errors 任务错误视图

获取任务错误视图

[视图信息]

类型 描述
job_id INTEGER 任务ID
proc_schema TEXT 执行任务函数的模式
proc_name TEXT 执行任务函数的名称
pid INTEGER 任务的后台进程ID
start_time TIMESTAMP WITH TIME ZONE 任务开始时间
finish_time TIMESTAMP WITH TIME ZONE 任务结束时间
sqlerrcode TEXT SQL错误码
err_message TEXT 详细的错误信息

[使用示例]

获取任务错误视图

SELECT * FROM timeudb_information.job_errors;

 

timeudb_experimental.policies 策略信息视图

获取策略信息视图

[视图信息]

类型 描述
relation_name TEXT 超表的模式名称
relation_schema TEXT 超表的名称
schedule_interval TEXT 策略运行时间间隔
proc_schema TEXT 策略的模式名称
proc_name TEXT 策略的表名称
config TEXT 策略配置信息
hypertable_schema TEXT 策略视图的模式名称
hypertable_name TEXT 策略视图的表名称

[使用示例]

获取策略信息视图

SELECT * FROM timeudb_experimental.policies;