0

我们有一个带有 timescaledb 插件的 postgres 数据库,用于存储基于时间的传感器数据,以千兆字节的数量并不断增长。数据库中有两个表,其中包含索引、外键和所有内容,如用于客户数据库的经典数据库或其他任何内容。问题是存在哪些性能选项可以提高插入性能和查询性能。

传感器数据由传感器 ID、时间戳和浮点值组成。传感器 ID 又由一个 ID 和一个面包屑串组成,通常大约 50 个字符长,但有时可能会更长一些。将此面包屑插入到传感器数据的表中会大大增加表的大小。因此,传感器 ID 位于单独的表中。

传感器数据表具有传感器 ID 表的外键以及传感器 ID 和时间的索引。

每秒从数千台设备中非常频繁地发生插入。所以插入性能很重要。除了清除旧数据之外,传感器数据永远不会更改,也不会发生删除。有时很少有用户执行查询来调查传感器数据。该应用程序定期运行查询以调查当前和以前的传感器数据是否已更改。

现在的问题是如何针对这个用例优化数据库。一种想法是删除外键以提高插入性能。我不确定查询性能是否真的不受此影响或受什么影响。传感器数据库对传感器 ID 和时间具有唯一的键约束。问题是查询需要现有索引,因此无法清除。

任何关于如何针对这种情况进行调整的想法都值得赞赏。

4

0 回答 0