在TimescaleDB和PostgreSQL上的基准插入比



首先要做的是创建一个表insertion_test。然后我用:

将它转换为一个超表
SELECT create_hypertable('insertion_test', 'timestamp1');

我尝试用timestamp12010-01-01 00:05:002020-01-01 00:05:00导入10个文件(每个文件包含100000行)来对插入进行基准测试,结果是PostgreSQL更快。为什么会发生这种情况?

请阅读有关"最佳实践"的部分。用于定义块的范围:

https://docs.timescale.com/timescaledb/latest/how-to-guides/hypertables/best-practices/

简而言之:您的块太小,导致在批量插入期间数据库开销过大,与单个表相比,(小)插入会降低性能。

数据库默认值是1周(您可以将其指定为create_hypertable的可选参数),这意味着如果您从2010年到2020年插入100,000行文件,那么它将为这100,000创建~520个块,或者每个块少于200行。即使有10个文件,每个块仍然少于2000行。我们通常建议每个块以百万行为数量级。

此外,通过加载具有相同时间范围的10个文件,您将导致它"在时间开始时开始"。用第二次插入。请注意,假设您的总数据量很小——100万行——它永远不会达到"磁盘抖动"的程度。这方面我们已经讨论过了,但是对于较大的插入需要考虑:

https://blog.timescale.com/blog/13-tips-to-improve-postgresql-insert-performance/

相关内容

  • 没有找到相关文章

最新更新