首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在partitioning_func数据库中使用“TimeScale”

如何在partitioning_func数据库中使用“TimeScale”
EN

Stack Overflow用户
提问于 2021-07-27 02:43:45
回答 2查看 494关注 0票数 1

从文档中可以看到,我们可以使用partitioning_func定义自定义空间分区函数。但是,我没有找到任何关于如何定义分区函数以及它应该返回什么的实际例子。

我所读到的是,默认情况下,它使用INT32_MAX (哈希表中的键范围),例如,如果我们给出number_partitions=2,那么数值< into 32_MAX/2将落入第一个分区,其余值将落入第二个分区。

在我的例子中,假设我在空间分区列中没有多少不同的值,然后根据默认的散列函数,很明显所有的值都属于第一个分区。但是,我希望每个不同的值都在不同的分区中。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-07-27 04:56:31

我想出了一个解决方案,如果我在空间分区列中有两个不同的值,我希望将每个值放在一个单独的分区中(这意味着我有两个分区)。

正如我在问题中提到的,时间刻度似乎使用c语言中的INT32_MAX。其中INT32_MAX值为2147483647,因此我将其除以2,以指示时间刻度,根据空间分区值(1或2)使用2个不同的分区。

下面的代码适用于我。我在TimeScale 2.3.1中使用Postgres 12

代码语言:javascript
复制
CREATE OR REPLACE FUNCTION two_partition_fun(i anyelement) RETURNS integer AS \$\$
        BEGIN
                RETURN 1073741821 + i;
        END;
\$\$ LANGUAGE plpgsql IMMUTABLE;

如果这是一个好办法,我没有信心,如果你有更好的办法,请告诉我。

票数 1
EN

Stack Overflow用户

发布于 2021-07-27 10:01:02

可以使用TimescaleDB向add_dimension超表添加多个维度。

空间分区的主要目的是支持跨多个数据节点(在分布式超表情况下)或在同一时间间隔内跨多个磁盘进行并行化。

有一些警告,包括:

  • 超表需要是空的
  • ,它可能适合于分布式超表,但是对于单节点超表,那么add_dimension的用例/需求相对有限--
  • 您应该考虑添加多个额外的维度来进行实验,而不是在生产中使用多个附加维度。

关于文档中的用法,还有更多的细节,但这可能正是您所要寻找的。

披露:我为时间刻度工作

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68538320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档