tao浅析postgresql 数据库 TimescaleDB 修改分区时间范畴

今天遇到一个问题 之前用TimescaleDB创建的超表 是已7天为单位的 由于7天的数据量过大 影响查询效率 需要把7天的分区改为一天一分区。
 
 
创建超表 create_hypertable()
 
1.创建普通版表
 
CREATE TABLE "超表名" (
 "collect_time" timestamp(6) NOT NULL,
 "code" varchar(36) COLLATE "pg_catalog"."default" NOT NULL,
 "value" numeric(14,4) NOT NULL,
 "create_time" timestamp(6) NOT NULL
)
;
 
2.改为超表 create_hypertable()
 
1SELECT create_hypertable('超表名', 'collect_time', chunk_time_interval => INTERVAL '7 day');
 
3.插入数据
 
INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2020-10-15 16:35:00', '22255220522', '23.4672', '2020-10-14 16:35:26.659');
INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2020-10-16 16:35:00', '26622569666', '0.1085', '2020-10-14 16:35:27.546');
INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2020-10-13 16:35:00', '525941155555', '25.0549', '2020-10-14 16:35:28.473');
INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2020-10-14 16:35:00', '744445411114', '0.0000', '2020-10-14 16:35:24.01');
INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2020-10-12 16:35:00', '774484457444', '0.0000', '2020-10-14 16:35:23.032');
 
查看分区,你会发现这些数据在2个分区内
 
修改分区 set_chunk_time_interval()
 
查看分区情况
 
1.查看_timescaledb_catalog.dimension 表
 
1SELECT * FROM "_timescaledb_catalog"."dimension"
 
 
interval_length上显示 604800000000 (TIMESTAMP类型)意思是一周
 
2.查看分区块状态
 
查看 dimension_slice 表
 
 
转换时间戳
 
1602720000000000 2020-10-15 08:00:00
 
1603324800000000 2020-10-22 08:00:00
 
这里可以看到分区是7天的
【声明】:芜湖站长网内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

相关文章