测试数据库性能SQL时间尺度超表VS SQL表

问题描述

我正在尝试测试timescaldb实例和常规sql接收的性能。根据时间尺度,超表针对时间序列数据进行了优化,并且接收率高于Postgresqlhttps://docs.timescale.com/latest/introduction/timescaledb-vs-postgres

我想将其与postgresql的JSONB字段进行比较,但是我的结果表明,使用JSONB字段处理时间序列实际上更快。因为到目前为止我还没有专家,所以我认为我的测试可能是不好的/错误的。这是我在做什么:

  1. 我创建了两个表<telerik:GridBoundColumn datafield="Email2" HeaderText="Email" UniqueName="Email2a" ReadOnly="true" Exportable="true" /> <telerik:GridTemplateColumn datafield="Email2" HeaderText="Email" UniqueName="Email2" display="false" Exportable="false"> <EditItemTemplate> ... </EditItemTemplate> </telerik:GridTemplateColumn> timeseriesold
timeseriesnew

然后,我循环33次8700个时间序列,以使用JSONB字段来保存我的时间序列数据,如下所示:

CREATE TABLE timeseriesold (
  description  TEXT       NOT NULL,data_json    JSONB      NOT NULL,);

CREATE TABLE timeseriesnew (
  time        TIMESTAMPTZ       NOT NULL,data_json   DOUBLE PRECISION  NULL,);

这大约需要一秒钟。

我将timeseriesnew转换为一个超表。我猜在一个超表中,每一行都是一个时间戳。因此我将时间戳循环287100次(33 * 8700),如下所示:

DO $FN$
 BEGIN
  FOR counter IN 1..33 LOOP
   RAISE NOTICE 'COUNTER: %',counter;
  EXECUTE $$ INSERT INTO timeseriesnew(description,data_json) VALUES ('example','{"1": 1234,"2": 1234,..... "8700": 1234}') $$ USING counter;
 END LOOP;
END;

因此,不同之处在于,我第一次循环33次以创建8700个数据点,第二次循环我287100次创建单个数据点。我的问题是双重的:
  1. 这是对性能的有效比较吗?
  2. 如果没有,我该如何进行有效比较?

任何帮助当然受到高度赞赏。非常感谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)