调整超表数据块间隔可以提升数据库性能。这适用于常规超表和分布式超表。有关更多信息,请参阅时间分区最佳实践

通过查询 Timescale 目录检查当前数据块间隔设置。例如

SELECT *
FROM timescaledb_information.dimensions
WHERE hypertable_name = 'metrics';

结果如下所示

hypertable_schema | hypertable_name | dimension_number | column_name | column_type | dimension_type | time_interval | integer_interval | integer_now_func | num_partitions
-------------------+-----------------+------------------+-------------+--------------------------+----------------+---------------+------------------+------------------+----------------
public | metrics | 1 | recorded | timestamp with time zone | Time | 1 day | | |
注意

基于时间的间隔长度以微秒为单位报告。

默认数据块间隔为 7 天。要在创建超表时更改此设置,请在创建超表时指定不同的 chunk_time_interval。在本示例中,要转换的表名为 conditions,它将时间值存储在名为 time 的列中

SELECT create_hypertable(
'conditions',
by_range('time', INTERVAL '1 day')
);

要在已存在的超表或分布式超表上更改数据块间隔,请使用函数 set_chunk_time_interval。在本示例中,超表名为 conditions

SELECT set_chunk_time_interval('conditions', INTERVAL '24 hours');

当您更改 chunk_time_interval 时,新设置仅适用于新数据块,而不适用于现有数据块。实际上,这意味着设置过长的时间间隔可能需要很长时间才能纠正。例如,如果您将 chunk_time_interval 设置为 1 年并开始插入数据,则无法再缩短该年的数据块。如果您需要纠正这种情况,请创建一个新的超表并迁移您的数据。

虽然数据块轮转不会降低性能,但数据块创建比对已创建的数据块执行普通 INSERT 操作需要更长的锁定时间。这意味着如果同时创建多个数据块,事务会相互阻塞,直到第一个事务完成。

关键词

在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页面