Postgresql
我可以在 timescaledb 中使用超表來獲得更好的插入率嗎?
我有一個 PostgreSQL 數據庫,我有大量的負載執行。我希望這個負載盡可能快。我已經在使用複制命令等。
我一直在閱讀有關timescaledb以及它如何提供改進的插入性能的資訊。但是,如果我只關心插入性能,我想知道使用超表而不是正常表是否有任何缺點?
(這裡的時間表人。)
是的,您應該能夠在 TimescaleDB 超表中獲得比普通表更高的插入率。
超表的主要缺點是它們暴露了一些與我們進行內部縮放的方式相關的限制。尤其:
- 如果一個鍵包含所有分區鍵(在其前綴中),我們只允許將它標記為 UNIQUE。因此,如果您在時間列上進行分區,則時間列可能是唯一的,或者您可以在 (time, device_id) 上建構唯一的複合鍵。但這意味著你不能建立一個標準的自動增量 id 作為主鍵(注意主鍵是定義唯一的)。但我們發現這通常對時間序列數據沒有意義。
- 您可以定義從超表到正常表的外鍵約束,但我們目前不允許相反的情況:從正常表到超表的 FK。(但與上面的 UNIQUE 約束限制相同,這很少有意義或可以圍繞設計。)
如果您有其他問題,Docs (docs.timescale.com) 或社區 Slack (slack.timescale.com) 是很好的資源。