警告

多节点支持已停用.

TimescaleDB v2.13 是最后一个包含对 PostgreSQL 13、14 和 15 版本多节点支持的版本。

在多节点环境中创建分布式 TimescaleDB 超表。

create_distributed_hypertable() 替换了 create_hypertable() (旧接口)。分布式表使用旧 API。新的通用 create_hypertable API 在 TimescaleDB v2.13 中引入。

名称类型描述
relationREGCLASS要转换为超表的表的标识符。
time_column_nameTEXT包含时间值的列的名称,也是用于分区的 primary 列。
名称类型描述
partitioning_columnTEXT要进行分区的附加列的名称。
number_partitionsINTEGER用于 partitioning_column 的哈希分区数量。必须大于 0。默认值为 data_nodes 的数量。
associated_schema_nameTEXT内部超表表的模式名称。默认为 _timescaledb_internal
associated_table_prefixTEXT内部超表块名称的前缀。默认为 _hyper
chunk_time_intervalINTERVAL每个块覆盖的事件时间间隔。必须大于 0。默认为 7 天。
create_default_indexesBOOLEAN布尔值,表示是否在时间/分区列上创建默认索引。默认为 TRUE。
if_not_existsBOOLEAN布尔值,表示如果表已转换为超表是打印警告还是抛出异常。默认为 FALSE。
partitioning_funcREGCLASS用于计算值的分区函数。
migrate_dataBOOLEAN设置为 TRUE 可将 relation 表中的任何现有数据迁移到新超表的块中。不带此选项的非空表将生成错误。大型表可能需要很长时间才能迁移。默认为 FALSE。
time_partitioning_funcREGCLASS将不兼容的主时间列值转换为兼容值的函数。该函数必须是 IMMUTABLE
replication_factorINTEGER写入相同数据的数据节点数量。通过在此数量的数据节点上创建块副本实现。必须 >= 1;如果未设置,默认值由 timescaledb.hypertable_replication_factor_default GUC 确定。在更改默认值之前,请阅读最佳实践
data_nodesARRAY用于分布式超表的数据节点集。如果不存在,则默认为访问节点(创建分布式超表的节点)已知的所有数据节点。
类型描述
hypertable_idINTEGERTimescaleDB 中超表的 ID。
schema_nameTEXT转换为超表的表的模式名称。
table_nameTEXT转换为超表的表的表名。
createdBOOLEAN如果超表已创建,则为 TRUE;如果 if_not_exists 为 TRUE 且未创建超表,则为 FALSE。

创建一个表 conditions,该表通过 'location' 列在数据节点间进行分区。请注意,空间分区的数量会自动等于分配给此超表的数据节点数量(在本例中为所有已配置的数据节点,因为未指定 data_nodes)。

SELECT create_distributed_hypertable('conditions', 'time', 'location');

使用特定数据节点集创建表 conditions

SELECT create_distributed_hypertable('conditions', 'time', 'location',
data_nodes => '{ "data_node_1", "data_node_2", "data_node_4", "data_node_7" }');
  • 哈希分区:分布式超表的最佳实践是启用 哈希分区。启用哈希分区后,传入数据会在数据节点之间进行分配。如果没有哈希分区,每个时间片的所有数据都将写入单个数据节点。

  • 时间间隔:遵循 create_hypertable 中定义的 chunk_time_interval 指南。

    启用哈希分区后,超表会在数据节点之间均匀分布。这意味着您可以设置一个更大的时间间隔。例如,如果每天摄取 10 GB 数据并分布到五个数据节点,每个节点有 64 GB 内存。如果这是这些数据节点服务的唯一表,则使用 1 周的时间间隔。

    7 days * 10 GB 70
    -------------------- == --- ~= 22% of main memory used for the most recent chunks
    5 data nodes * 64 GB 320

    如果不启用哈希分区,请使用与非分布式实例相同的 chunk_time_interval 设置。这是因为所有传入数据都由单个节点处理。

  • 复制因子replication_factor 定义了新创建的块被复制到多少个数据节点。例如,当您将 replication_factor 设置为 3 时,每个块将存在于 3 个单独的数据节点上。写入块的行将通过两阶段提交协议插入到所有数据节点中。

    如果数据节点发生故障或被移除,数据不会丢失。写入操作在其他数据节点上成功。但是,丢失数据节点上的块现在处于副本不足状态。当故障数据节点可用时,通过调用 copy_chunk 来重新平衡这些块。

关键词

此页面有发现问题吗?报告问题 或在 GitHub 上编辑此页面