问题描述
我在timescale db中创建了一个超表并保留了数据,我想查看其中的块的时间范围。我怎样才能做到这一点 ?像chunk_relation_size_pretty
这样的函数可以显示大小,而不显示时间范围。
解决方法
我使用此视图获取有关超表中块的信息。 https://github.com/timescale/timescaledb-extras下也提供了它的两个版本,因此您也可以在此处进行检查。
CREATE SCHEMA info;
CREATE OR REPLACE VIEW info.chunks AS
SELECT format('%1$I.%2$I',ch.schema_name,ch.table_name)::regclass AS chunk,format('%1$I.%2$I',ht.schema_name,ht.table_name)::regclass AS hypertable,tstzrange(TIMESTAMPTZ 'epoch' + sl.range_start * INTERVAL '1 microsecond',TIMESTAMPTZ 'epoch' + sl.range_end * INTERVAL '1 microsecond') AS date_range,(SELECT (SELECT spcname FROM pg_tablespace WHERE reltablespace = oid)
FROM pg_class
WHERE format('%1$I.%2$I',ch.table_name)::regclass = pg_class.oid) AS tablespace
FROM _timescaledb_catalog.chunk ch
JOIN _timescaledb_catalog.hypertable ht ON ch.hypertable_id = ht.id
JOIN _timescaledb_catalog.dimension di ON di.hypertable_id = ht.id
JOIN _timescaledb_catalog.chunk_constraint cn ON cn.chunk_id = ch.id
JOIN _timescaledb_catalog.dimension_slice sl ON cn.dimension_slice_id = sl.id
WHERE column_type = 'timestamptz'::regtype;