我有一个 PostgreSQL 数据库,我有大量的负载运行。我希望这个负载尽可能快。我已经在使用复制命令等。
我一直在阅读有关timescaledb以及它如何提供改进的插入性能的信息。但是,如果我只关心插入性能,我想知道使用超表而不是常规表是否有任何缺点?
我有一个 PostgreSQL 数据库,我有大量的负载运行。我希望这个负载尽可能快。我已经在使用复制命令等。
我一直在阅读有关timescaledb以及它如何提供改进的插入性能的信息。但是,如果我只关心插入性能,我想知道使用超表而不是常规表是否有任何缺点?
(这里的时间表人。)
是的,您应该能够在 TimescaleDB 超表中获得比普通表更高的插入率。
超表的主要缺点是它们暴露了一些与我们进行内部缩放的方式相关的限制。尤其是:
如果一个键包含所有分区键(在其前缀中),我们只允许将它标记为 UNIQUE。因此,如果您在时间列上进行分区,则时间列可能是唯一的,或者您可以在 (time, device_id) 上构建唯一的复合键。但这意味着你不能建立一个标准的自动增量 id 作为主键(注意主键是定义唯一的)。但我们发现这通常对时间序列数据没有意义。
您可以定义从超表到常规表的外键约束,但我们目前不允许相反的情况:从常规表到超表的 FK。(但与上面的 UNIQUE 约束限制相同,这很少有意义或可以围绕设计。)
如果您有其他问题,Docs (docs.timescale.com) 或社区 Slack (slack.timescale.com) 是很好的资源。