我想提高我的数据库,简化装配的性能PostgreSQL的性能提示如下:散乱数据
编辑
- 一个表有3行(id_device,时间戳,数据)与复合B树索引(id_device,时间戳)
- 1K设备发送数据的每一分钟
插入速度非常快,因为PostgreSQL只是按照收到的顺序写入行。但是,当试图通过给定设备的连续时间戳获取多个数据时,查询速度并不快。我的理解是,由于收集数据的方式,表格每页上的给定设备的行数不会超过一行。因此,如果我想要获得给定设备连续时间戳的10k数据,PostgreSQL必须从磁盘读取10k页。此外,由于可以在任何1k设备上完成此操作,因此这些页面不会保存在RAM中。
我试过CLUSTER表,它确实解决了性能问题,但是这个操作非常长(〜1天),并且锁定了整个表,所以我放弃了这个解决方案。
我已经阅读了有关分区的内容,但是如果每次连接新设备时都需要添加新表格,这就意味着需要大量脚本,并且在我看来,这有点容易出错。
我对这个设置不是特别原创的事实很有信心,那么我可以使用一个建议吗?
感谢您的阅读, 纪尧姆
如果您的查询只检查时间戳,则应该仅在时间戳上添加索引。 – Renzo
我编辑了这个问题,因为我的设置过于简单。还有一些数据可以检索。 – gdlr