postgresql 資料庫 TimescaleDB 超表修改分割槽時間(範圍)

語言: CN / TW / HK

本文已參與「新人創作禮亅活動,一起開啟掘金創作之路。

postgresql 資料庫 TimescaleDB 超表修改分割槽時間(範圍)

今天遇到一個問題 之前用TimescaleDB建立的超表 是已7天為單位的 由於7天的資料量過大 影響查詢效率 需要把7天的分割槽改為一天一分割槽 在這裡插入圖片描述

建立超表 create_hypertable()

1.建立普通版表

sql 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() sql SELECT create_hypertable('超表名', 'collect_time', chunk_time_interval => INTERVAL '7 day');

3.插入資料

sql 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 表

sql SELECT * 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天的

二.修改分割槽時間 set_chunk_time_interval()

1.修改分割槽時間 sql SELECT set_chunk_time_interval('超表名', interval '24 hours'); 2.插入資料驗證

sql INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2021-1-14 16:35:00', '375222D001', '27.7932', '2020-10-14 16:35:15.011'); INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2021-1-15 16:35:00', '3715044111', '0.0000', '2020-10-14 16:35:20.389'); INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2021-1-16 16:35:00', '202Q0019QT001', '0.3663', '2020-10-14 16:35:19.087'); INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2021-1-17 16:35:00', '3702000284441', '22.2946', '2020-10-14 16:35:15.035'); INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2021-1-18 16:35:00', '37075225555501', '0.3022', '2020-10-14 16:35:24.041'); INSERT INTO 超表名("collect_time", "code", "value", "create_time") VALUES ('2021-1-19 16:35:00', '25555222206001', '0.0000', '2020-10-14 16:35:23.956');

三.檢視 修改結果

檢視_timescaledb_catalog.dimension 表在這裡插入圖片描述 變成 86400000000 了 2.檢視分割槽 分割槽也多了 在這裡插入圖片描述 還有第2種(未測試) 我想能不能直接"_timescaledb_catalog"."dimension" 表的 interval_length 欄位直接 改為86400000000