如何 repartition/refactor/ 减少 timescaleDB 中的块

how to repartition/refactor/ reduce chunks in timescale DB

目前,我有一个 10GB space 的 timescaleDB hyper table,但是,我已经将它分区为 1500 个块,在一台具有 32GB 内存的机器上,我意识到它太过分了。我想问一下将我的 hypertable 转换为块较少的 table 的正确方法是什么....

这就是我之前构建 table 的方式:

CREATE TABLE db_009a005a_df_downloaded_grand (
    symbol VARCHAR(32), 
    timestamp TIMESTAMP WITH TIME ZONE NOT NULL, 
    volume DOUBLE PRECISION, 
    close DOUBLE PRECISION, 
    high DOUBLE PRECISION, 
    low DOUBLE PRECISION, 
    open DOUBLE PRECISION
)

;
SELECT create_hypertable('db_009a005a_df_downloaded_grand', 'timestamp','symbol',8); 

我创建了一个新的 table 试图将数据迁移到

CREATE TABLE db_009a005a_df_downloaded_grand2 (
    symbol VARCHAR(32), 
    timestamp TIMESTAMP WITH TIME ZONE NOT NULL, 
    volume DOUBLE PRECISION, 
    close DOUBLE PRECISION, 
    high DOUBLE PRECISION, 
    low DOUBLE PRECISION, 
    open DOUBLE PRECISION
)

;
SELECT create_hypertable('db_009a005a_df_downloaded_grand2', 'timestamp','symbol',1,chunk_time_interval => INTERVAL '3 years');

我可以吗?

INSERT INTO db_009a005a_df_downloaded_grand2
SELECT * FROM db_009a005a_df_downloaded_grand;

目前,TimescaleDB 不提供任何工具来将现有块转换为不同的块大小。所以有必要手动完成。我相信唯一的方法是创建具有所需块大小的新 hypertable,然后将数据从旧的 hypertable 复制到新的 hypertable。如有必要,在删除旧 table.

后重命名新 table

可以通过 CSV 文件完成复制以利用 Timescale's parallel copy tool。或者批量插入也不错,提高复制性能