1、查询数据库的表
SELECT table_name FROM information_schema.tables
WHERE table_schema = '模式名称' and "table_name" like 'data_010521118%'
2、创建超表
先创建表:CREATE TABLE 表名 (time TIMESTAMPTZ NOT NULL, 字段。。。)
通过 time 进行分区将普通表转换为超表:SELECT create_hypertable('表名','time')
3、移除旧的数据保存策略
SELECT remove_retention_policy('表名', true);
4、新建数据库保留策略(day、weeks、months、years)
SELECT add_retention_policy('表名', INTERVAL '3 weeks');
5、查看表的保留策略
SELECT * FROM timescaledb_information.jobs WHERE hypertable_schema = '模式' AND hypertable_name = '表名';
6、查看超表的块列表
SELECT show_chunks('表名')
7、手动删除块数据
SELECT drop_chunks('模式.表名', INTERVAL '3 months');
8、查看数据库的大小
SELECT pg_size_pretty(pg_database_size('mom')) AS schema_size;
select datname, pg_size_pretty (pg_database_size(datname)) AS size from pg_database;
9、循环删除超表数据,重新设置表的保存策略('内'用'')
DO $$
DECLARE
row record;
BEGIN
FOR row IN SELECT table_name FROM information_schema.tables WHERE table_schema = 'data' AND "table_name" like 'data_0105211161%' LOOP
EXECUTE format('SELECT drop_chunks( ''%I'' , INTERVAL ''3 weeks'');SELECT remove_retention_policy(''%I'', true);SELECT add_retention_policy(''%I'', INTERVAL ''3 weeks'');', row.table_name, row.table_name, row.table_name);
END LOOP;
END $$;
10、查看数据库各个模式的大小
SELECT
schema_name,
pg_size_pretty(sum(table_size)::bigint) AS schema_size
FROM (
SELECT
table_schema AS schema_name,
pg_total_relation_size(table_schema || '.' || table_name) AS table_size
FROM
information_schema.tables
WHERE
table_schema NOT IN ('pg_catalog', 'information_schema')
) AS schema_tables
GROUP BY
schema_name
ORDER BY
sum(table_size) DESC;