迁移 Postgresql table 到时间刻度数据库
Migration Postgresql table to timescale db
我有 table
CREATE TABLE mytable
(
device_id bigint NOT NULL,
start TIMESTAMP WITHOUT TIME ZONE,
level varchar(255) NOT NULL,
amount integer
);
我想将它迁移到 hypertable
像那样:
SELECT create_hypertable('mytable', 'start','device_id', migrate_data => true);
但我得到一个错误
ERROR: invalid number of partitions for dimension "device_id"
HINT: A closed (space) dimension must specify between 1 and 32767 partitions.
SQL state: 22023
我做错了什么?我有类似的 tables,它可以正常工作。
在 azure postgresql 上使用 Postgresql 11 和时间刻度数据库 1.7.4 运行。
提前致谢
问候
奥利弗
该错误与数据迁移无关。是因为指定了space维数device_id
而没有指定维数。来自 create_hypertable
的文档:
| `partitioning_column` | Name of an additional column to partition by. |
| `number_partitions` | Number of hash partitions to use for `partitioning_column`. Must be > 0. Default is the number of `data_nodes`. |
比如create hypertable语句可以固定为
SELECT create_hypertable('mytable', 'start','device_id', 4, migrate_data => true);
其中分区数的幻数 4
需要很好的推理。
实际上很少需要 space 维度,根据同一文档中的最佳实践,通常情况下不推荐:
Space partitions: In most cases, it is advised for users not to use space partitions. However, if you create a distributed hypertable, it is important to create space partitioning, see create_distributed_hypertable. The rare cases in which space partitions may be useful for non-distributed hypertables are described in the add_dimension section.
因此最好使用以下语句而不指定 space 分区:
SELECT create_hypertable('mytable', 'start', migrate_data => true);
我有 table
CREATE TABLE mytable
(
device_id bigint NOT NULL,
start TIMESTAMP WITHOUT TIME ZONE,
level varchar(255) NOT NULL,
amount integer
);
我想将它迁移到 hypertable 像那样:
SELECT create_hypertable('mytable', 'start','device_id', migrate_data => true);
但我得到一个错误
ERROR: invalid number of partitions for dimension "device_id"
HINT: A closed (space) dimension must specify between 1 and 32767 partitions.
SQL state: 22023
我做错了什么?我有类似的 tables,它可以正常工作。
在 azure postgresql 上使用 Postgresql 11 和时间刻度数据库 1.7.4 运行。 提前致谢
问候 奥利弗
该错误与数据迁移无关。是因为指定了space维数device_id
而没有指定维数。来自 create_hypertable
的文档:
| `partitioning_column` | Name of an additional column to partition by. |
| `number_partitions` | Number of hash partitions to use for `partitioning_column`. Must be > 0. Default is the number of `data_nodes`. |
比如create hypertable语句可以固定为
SELECT create_hypertable('mytable', 'start','device_id', 4, migrate_data => true);
其中分区数的幻数 4
需要很好的推理。
实际上很少需要 space 维度,根据同一文档中的最佳实践,通常情况下不推荐:
Space partitions: In most cases, it is advised for users not to use space partitions. However, if you create a distributed hypertable, it is important to create space partitioning, see create_distributed_hypertable. The rare cases in which space partitions may be useful for non-distributed hypertables are described in the add_dimension section.
因此最好使用以下语句而不指定 space 分区:
SELECT create_hypertable('mytable', 'start', migrate_data => true);