虽然 Timescale 通常提供超出 PostgreSQL 功能的功能,但在使用超表,特别是分布式超表时,存在一些限制。本节记录了使用常规超表和分布式超表时常见的限制。
- 用于分区的 time 维度(列)不能有 NULL 值。
- 唯一索引必须包含所有作为分区维度的列。
- 不支持在分区(chunk)之间移动值的
UPDATE
语句。这包括 upsert (INSERT ... ON CONFLICT UPDATE
)。 - 不支持从超表引用另一个超表的外键约束。
常规超表的所有限制也适用于分布式超表。此外,以下限制专门适用于分布式超表
- 不支持后台作业的分布式调度。在访问节点上创建的后台作业将在该访问节点上调度和执行,而不会将作业分发到数据节点。
- 连续聚合可以聚合分布在数据节点上的数据,但连续聚合本身必须位于访问节点上。这可能会限制您扩展安装的程度,但由于连续聚合是数据的降采样,因此通常不会造成问题。
- 不支持重新排序 chunk。
- 表空间不能附加到访问节点上的分布式超表。仍然可以将表空间附加到数据节点。
- 角色和权限被假定在分布式数据库的节点之间是一致的,但不会强制执行一致性。
- 不支持在数据节点上进行连接。将分布式超表与另一个表连接需要另一个表驻留在访问节点上。这也限制了分布式超表连接的性能。
- 分布式超表中外键约束引用的表必须存在于访问节点和所有数据节点上。这也适用于引用的值。
- 不支持并行感知扫描和追加。
- 分布式超表本身不提供跨节点备份和还原的一致还原点。使用
create_distributed_restore_point
命令,并确保在将单个备份还原到访问节点和数据节点时小心操作。 - 有关原生复制限制,请参阅原生复制部分。
- 用户定义的函数必须手动安装在数据节点上,以便函数定义在访问节点和数据节点上都可用。这对于使用
set_integer_now_func
注册的函数尤其重要。
请注意,这些限制与从访问节点的使用有关。某些当前不支持的功能可能仍然在各个数据节点上工作,但此类使用未经测试,也未获得官方支持。未来版本的 Timescale 可能会消除其中一些限制。
关键词
在此页面上发现问题?报告问题 或 在 GitHub 上编辑此页。