postgresql + timescaledb优化时间序列数据查询

场景:

  用postgresql存上百万条的数据,还有在这些表的基础上做时间相关的聚合,一开始聚合的结果耗时高达7s,最高的有30s左右。于是用timescaledb做优化。

解决:

  由于之前安装的pg是10版本的,现在最新的timescaledb要求pg12以上,于是我才用timescale 1.4的版本。

  timescale下载位置:https://github.com/timescale/timescaledb/

  上传安装包后,解压:

tar -zxf timescaledb-1.4.0.tar.gz

  解压后进入该路径,执行:

 ./bootstrap -DUSE_OPENSSL=0 -DREGRESS_CHECKS=OFF

  也可以./bootstrap,但是在make时可能会遇到以下错误:

 

 

   如果出现找不到pg_config的问题,可以采用添加pg安装路径到环境变量中:

 

vi ~/.bash_profile

// 加上pg的路径
PATH=$PATH:$HOME/bin
PATH=$PATH:/usr/pgsql-10/bin

source ~/.bash_profile

  或者可以像我一样,我是直接改了CMakeList的配置,在这一段:

 1 # Search paths for Postgres binaries
 2 if (WIN32)
 3   find_path(PG_PATH
 4     bin/postgres
 5     HINTS
 6     "C:/PostgreSQL"
 7     "C:/Program Files/PostgreSQL"
 8     PATH_SUFFIXES
 9     bin
10     10/bin
11     96/bin
12     pg96/bin
13     DOC
14     "The path to a PostgreSQL installation")
15 endif (WIN32)
16 
17 if (UNIX)
18   find_path(PG_PATH
19     bin/postgres
20     HINTS
21     $ENV{HOME}
22 
23     # 把这里改成自己的安装路径
24     /opt/local/pgsql
25     /usr/local.pgsql
26     /usr/lib/postgresql
27     PATH_SUFFIXES
28     bin
29     10/bin
30     9.6/bin
31     96/bin
32     pg96/bin
33     DOC
34     "The path to a PostgreSQL installation")
35 endif (UNIX)

  然后make:

cd ./build && make 

  这里如果出现缺少postgresql.h等缺少头文件的错,是因为pg不是源表安装的,可以去源码安装的同版本pg中的include文件,复制到pg的路径下

  最后:

make install

  可以去pg的/share/extension下看看,是不是有插件了:

 

   去pg的postgresql.conf下,添加该插件:

shared_preload_libraries = 'timescaledb'

  然后建立超表,以及表的索引(来自官方代码):

SELECT create_hypertable('stocks_real_time','time');

CREATE INDEX ix_symbol_time ON stocks_real_time (symbol, time DESC);

  最后优化后的查询时间:然后在sql层面上继续优化!

  

 

 

 

参考:

  数据库引擎排名:https://db-engines.com/en/ranking/time+series+dbms

  https://docs.timescale.com/getting-started/latest/create-hypertable/#hypertables-and-chunks

  https://blog.csdn.net/qq_39715000/article/details/125022516

  https://blog.csdn.net/weixin_43631631/article/details/105029950

  https://blog.csdn.net/jacicson1987/article/details/82970721

posted @ 2022-06-07 16:35  陈子白  阅读(1296)  评论(0编辑  收藏  举报