问题标签 [hypertable]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
72 浏览

postgresql - 通过运行 ANALYZE 来提高查询性能?

  • PostgreSQL 版本:12.4
  • TimescaleDB 版本:1.7.4

你好,

我有一个表,其中数据仅基于时间分布在多个块中,即一天创建超表。我正在尝试提高 SELECT 查询的性能。为了实现这一点,我必须定期在整个表上运行 ANALYZE。由于表中没有执行任何更新或删除,因此 VACUUM 在我的情况下似乎效率低下。此外,我也不能放置多个索引,因为它会降低摄取性能并且会占用大量磁盘空间。

我按时间顺序将数据摄取到表中。最近的数据将存储在一个连续的超表中。

问题:

如果我假设我已经在所有以前的超表上运行了 ANALYZE,我只在新创建的超表上运行 ANALYZE,我会得到任何性能改进吗?

或者是否必须在整个表上运行 ANALYZE 以获得最佳性能,为什么?

谢谢

0 投票
1 回答
247 浏览

go - Timescale DB 未创建超表

我正在关注 timescaleDB 的教程。https://docs.timescale.com/timescaledb/latest/how-to-guides/hypertables/create/#create-a-hypertable

但我无法创建超表。我已经成功安装了 postgres 和 timescale。为什么我不能制作超表?

错误:无法创建 sample_table 超表:错误:函数 create_hypertable(unknown, unknown) 不存在 (SQLSTATE 42883)

0 投票
0 回答
131 浏览

node.js - Sequelize 和 TimescaleDB 出现错误:不支持超表的外键

我使用 Node.JS 和 Sequelize 与 TimescaleDB 关联表以实现多对多关系。我得到了错误: -

SequelizeDatabaseError:不支持超表的外键

我发现了相关问题和我关于 TimescaleDB 的错误,如下所示:[https://github.com/timescale/timescaledb/issues/1394][1]

我的源代码如下:-

我是 TimescaleDB 的新手,我不确定是否有另一种方法可以解决这个问题。任何人都可以帮助我建议与 Sequelize 建立多对多关系的连接表吗?

0 投票
1 回答
139 浏览

java - 如何从具有联合主键的表中创建具有 TimescaleDB 的超表?

这个问题几乎说明了一切。我正在尝试从具有联合主键的表中使用 TimescaleDB 创建一个超表:

当我尝试通过 Intellij 使用 Java 运行它时,我收到此错误:

更新:我尝试在不将任何主键放入表中的情况下运行迁移,但它仍然给出相同的错误。问题可能是 Flyway 根本不支持 TimescaleDB 函数吗?如果是这样,我该如何解决?

0 投票
0 回答
135 浏览

postgresql - 如何在 PostgreSQL 中使用外键约束正确引用超表?

#错误描述: 如果在创建表时定义了外键,则可以将具有外键的表创建到超表中

#为了重现,有下一张表:

创建表后,我在使用PostgreSQL 12.6 的数据库中使用了@Laurenz 提出的解决方案,使用 timescaledb 1.7.5 的扩展,如下所示:

#用适当的值填充表格:

#然后将其设置为NOT NULL:

#定义你的外键:

#最后一个引用表启用外键的响应: 查询在40毫秒内成功返回。

预期行为: 这个想法是使用表 job_metric 在一个甚至多对多的关系中访问作业和指标表的信息。

实际行为和错误: 创建了表并创建了 FK,但在 job_metric 中插入数据时无法使用,如下所述:

错误:不支持超表的外键上下文:SQL 语句“ALTER TABLE _timescaledb_internal._hyper_5_5_chunk ADD CONSTRAINT”5_13_job_metric_j_id_mj_id_jm_time_fkey”外键(j_id,mj_id,jm_time)参考 qmetrics(“时间”,m_id)匹配完整“PL/pgSQL 函数.chunk_constraint_add_table_constraint(_timescaledb_catalog.chunk_constraint) 执行 SQL 状态的第 42 行:0A000

***根据https://docs.timescale.com/timescaledb/latest/overview/limitations/##distributed-hypertable-limitations,看起来上述错误是超表限制的一部分:

不支持引用超表的外键约束。

#Request: 鉴于上述信息和错误,是否有人知道在数据库级别使用 timescaledb 扩展和主要是超表建立关系(多对多或一对多)的任何解决方案?


实际上,当我尝试使用 Django Rest Framework 在表 metrics 和 job_metric 之间创建多对多关系时,我得到了类似的上述错误:

运行应用程序指标直接指出metrics_db: $ python3 manage.py migrate metrics --database=metrics_db

要执行的操作:应用所有迁移:指标运行迁移:应用 metrics.0002_job...Traceback(最近一次调用最后):文件“/var/myproject/myprojectenv/lib/python3.8/site-packages/django/db/ backends/utils.py",第 84 行,在 _execute return self.cursor.execute(sql, params) psycopg2.errors.FeatureNotSupported:不支持超表的外键

如果有人知道解决方案或有想法在 REST API 级别处理上述错误,请您分享您的想法,以访问数据关联表(指标和作业)并在需要删除时一起修改它们,例如,一个job_metric。到目前为止,使用超表修正 timescaledb 扩展似乎不是一个可行的解决方案。

0 投票
2 回答
48 浏览

sql - 是否可以在不使用 SQL 子查询的情况下根据另一列选择一列?

我在 PostgreSQL 的 TimescaleDB 中工作。我有下表:

我可以在一个查询中选择时间戳为 timestamp_start 和时间戳加一小时作为 timestamp_end 的一小时存储桶中的时间(意味着没有子查询)吗?

所以这就是我正在寻找的结果:

0 投票
2 回答
152 浏览

sql - 如何在 TimeScaleDB、PostgreSQL 的 time_bucket_gapfill() 中使用 AVG() 和 GROUP BY?

我在我的 PostgreSQL 中使用 TimescaleDB,我有以下两个表:

windows_log

windows_reliability_score

注意:在两个表中都在时间戳列(hypertable)上建立索引

所以我试图获得每个时间桶的平均reliability_score,但它只是给了我所有东西的平均值,而不是每个特定桶的平均值......

这是我的查询:

这是我正在寻找的结果:

但这就是我得到的:

0 投票
2 回答
305 浏览

offset - TimeScaleDB 连续聚合刷新策略结束偏移未按预期工作

我是 TimeScaleDB 的新手,我创建了一个连续的聚合视图

我为此视图创建了刷新策略:

即使将结束偏移量设置为 1 小时后,我也会获得最新添加的数据。

刷新日志:

但是物化视图包含结束偏移之外的数据,虽然开始偏移设置工作正常

以下是物化视图中的数据: 物化视图

编辑:此外,我什至在政策刷新之前就获得了最新数据。

0 投票
1 回答
73 浏览

time-series - TimescaleDB time_bucket() 函数为任意时间间隔提供意外结果

我创建了一个超表 water_meter 来存储传感器数据

它包含以下按时间戳升序排列的数据

点击这里查看上述查询的结果

可以看出我的数据从01 May 2020

如果我使用 time_bucket() 函数来获取每 1 天的聚合:

它工作正常,我得到以下数据:

查看 time_bucket('1 day') 的结果

现在,如果我使用它来获取 15 天的聚合,我会得到意想不到的结果,其中显示了 的开始时间段17 April 2020,而表中没有数据

点击查看 time_bucket('15 days') 的结果

0 投票
1 回答
83 浏览

sql - Posgresql 交叉表替代方案

我正在寻找交叉表替代品。我在 Timescaledb (posgresql) 超表中有多行数据: 在此处输入图像描述

例如,当类别 2 > 4 时,我需要计算类别 = 1 的平均值。我现在正在做的是使用交叉表进行枢轴,然后我计算类别 1 的平均值。有没有办法在没有枢轴(交叉表)的情况下做到这一点?

有些查询我不能使用交叉表,因为在我只选择了单个“id”的地方不起作用。它将类别聚合为一行。

我正在寻找可以将单个值用作“id”并且比交叉表更快的东西。我有巨大的数据集。