如何确定表是否启用了时标以及在哪些列上启用了?

时间:2019-10-16 11:43:53

标签: postgresql timescaledb

我有一个由其他人创建的Timescale数据库。

  1. 如何确定是否在表上调用了create_hypertable

目前我使用此方法,但必须有一种更好的方法:

SELECT * FROM hypertable_relation_size('public.data');
  1. 如果在表上调用了create_hypertable,则在调用create_hypertable时使用了哪些参数(包括chunk_time_interval)?

(在某些情况下,有一个from_date和to_date)

1 个答案:

答案 0 :(得分:1)

TimescaleDB维护有关超表的元数据,并提供视图以查询元数据。视图位于模式timescaledb_information中,可以从timescaledb_information.hypertable检索有关超表的信息。

例如:

SELECT * FROM timescaledb_information.hypertable WHERE table_name = 'data';

This API doc包含更多信息和示例。

请注意,时间块间隔可以随时间更改,因此视图不提供有关它的信息。因此,有必要检查每个块以查看其间隔。这可以通过调用文档here中描述的函数chunk_relation_size_pretty来完成。例如:

SELECT chunk_table, partitioning_columns, ranges 
  FROM chunk_relation_size_pretty('data');

如果您在另一个模式中,则必须指定超级表的完全限定名称,因为它需要一个标识符:

SET SCHEMA 'test';
SELECT chunk_table, partitioning_columns, ranges 
  FROM public.chunk_relation_size_pretty('public.data');