高速时间序列查询postgresql硬件注意事项

时间:2015-07-31 11:06:28

标签: performance postgresql time-series

对于尽可能快地轮询大量中低密度传感器数据时间序列的硬件选择,我们有一些一般性的问题。

系统概述

数据包括来自不同时间不同位置的各种传感器的大约50-100K数据点的多个时间序列。主表中有大约15列数据,但有些列中包含长数组值。我与C#/ python接口,将查询发送到本地数据库,然后处理返回的数据。

问题和一些想法

目前,日志记录服务器的平均硬件(预算为4tb hdds,基本四核,8gb ram),并且根据查询中请求的数据量,它需要永远(re:"恼人的数量)等待")返回整个时间序列。我有成千上万的独立时间序列,我想比较多个时间序列。对于50K行,返回单个时间序列至少需要30个*,可能需要30秒以上,但只需几个列就可以低至100毫秒。使用了很多不同的查询,因此我不会为重复查询提供缓存。

所以我想到的是,不是直接从在线服务器上工作,而是将数据库的脱机副本放到更专用的硬件上,以便更快地进行分析。我一次都不需要所有数据(例如,我可以选择一个位置和时间范围,离线复制并继续处理)

表格设计非常基础。最常查询的表数据具有主键:

PRIMARY KEY (location_id, time_logged, sensor_id)

使用简单的查询,如

SELECT * FROM table 
WHERE location_id = 2154321 AND sensor_id = 254;

这是最常见的,并将与其他一些WHERE条件一起使用。

每个location_id

有数千个location_id和几十个sensor_id

问题

(关于上表/ pk /查询设置)

  1. 更多RAM有助于更快的查询。即64GB vs 8GB
  2. 更快的cpu /更多内核对更快的查询有多大帮助。什么样的CPU(quad / 6/12 +)可以提供最佳的加速。收益递减了吗?
  3. 如何设置硬盘驱动器以帮助更快速的查询(带有SSD或机械的RAID群集)。
  4. 获得一对甚至4+便宜的机械硬盘驱动器会在RAID中提供显着的加速吗?
  5. 我已经阅读了关于柱状商店以及它如何对时间序列(https://www.citusdata.com/blog/76-postgresql-columnar-store-for-analytics)有用的内容。任何人都可以对此有任何见解,是否值得设置?
  6. 增加规划师统计数值会有显着帮助吗?
  7. 获得最佳查询加速的任何一般建议/第一步?另一台具有多核和大量内存的专用PC?一个NAS?具有多驱动器RAID的专用PC
  8. 我在使用数据库方面比较新,所以我们真的不知道在性能方面有什么期望,所以任何指针都会有所帮助。

    谢谢!

0 个答案:

没有答案