TimescaleDB 与 PostgreSQL 的基准插入率

Benchmark insert ratio on TimescaleDB vs PostgreSQL

首先要做的是创建一个 table insertion_test。然后我将其转换为 hypertable 并使用:

SELECT create_hypertable('insertion_test', 'timestamp1');

我尝试通过从 2010-01-01 00:05:002020-01-01 00:05:00 导入 10 个文件(每个文件包含 100000 行)timestamp1 来对插入进行基准测试,结果是 PostgreSQL 更快。为什么会这样?

请阅读有关定义块范围的“最佳实践”的部分:

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

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

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

此外,通过加载 10 个具有相同时间范围的文件,您将导致它在第二次插入时“从时间开始”。请注意,鉴于您的总数据量很小——100 万行——它永远不会达到我们谈到的“磁盘抖动”方面,但对于更大的插入要考虑一些事情:

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