#sql #postgresql #timescaledb
#sql #postgresql #timescaledb
Вопрос:
Я создал гипертаблицу в базе данных timescale и сохранил данные, и я хочу увидеть временной диапазон фрагментов внутри. Как я могу это сделать? Существуют такие функции, как chunk_relation_size_pretty
however, которые показывают размер, а не временной диапазон.
Ответ №1:
Я использую это представление для получения информации о фрагментах в гипертаблице. Две его версии также доступны в разделе 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.schema_name, 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;