Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql 在Postgres中使用多个分区的开销_Postgresql - Fatal编程技术网

Postgresql 在Postgres中使用多个分区的开销

Postgresql 在Postgres中使用多个分区的开销,postgresql,Postgresql,在下面的链接中,我使用的工具(Airflow)的创建者建议为维度表的每日快照创建分区。我想知道在博士后做这样的事情的开销 我对几个表使用Postgres 10内置分区,但对于facts,大多数情况下是每月或每年一次。我以前从未尝试过为维度实现每日分区,这看起来很可怕。这将简化一些事情,尽管在一些方面对我来说,以防我需要重新运行旧任务 简单。使用维度快照,其中新分区附加在 每个ETL计划。维度表将成为 每个分区都包含完整维度的维度快照 作为一个时间点。“但只有一小部分数据 每天都在变化,这就是大

在下面的链接中,我使用的工具(Airflow)的创建者建议为维度表的每日快照创建分区。我想知道在博士后做这样的事情的开销

我对几个表使用Postgres 10内置分区,但对于facts,大多数情况下是每月或每年一次。我以前从未尝试过为维度实现每日分区,这看起来很可怕。这将简化一些事情,尽管在一些方面对我来说,以防我需要重新运行旧任务

简单。使用维度快照,其中新分区附加在 每个ETL计划。维度表将成为 每个分区都包含完整维度的维度快照 作为一个时间点。“但只有一小部分数据 每天都在变化,这就是大量的数据重复!”。对,, 虽然通常维度表的大小在比例上可以忽略不计 与事实相符。这也是一种解决SCD类型问题的优雅方法 它的简单性和再现性。现在,存储和计算 与工程时间相比,快照尺寸非常便宜 在大多数情况下是有道理的

而传统的2型慢变维方法是 从概念上讲是合理的,总体而言,计算效率可能更高, 管理起来很麻烦。围绕此方法的过程,如 管理维度上的代理项并执行代理项 加载事实时的查找容易出错,充满了突变和错误 几乎不可复制


我使用过具有不同分区级别的系统。 通常,只要您对分区有检查约束,允许查询计划器为查询找到足够的分区,任何分区都是可以的。或者,对于某些特殊情况,您必须直接查询特定分区。否则,即使对于简单的查询,您也会看到对所有分区的顺序扫描

日常分区完全可以,不用担心。我使用基于PG的数据收集器处理事件,PG需要为每5分钟的数据设置分区,因为它每天收集几个TB

只有当您有几千或几十万个分区时,分区的数量才可能成为一个更大的问题——有了这个数量的分区,所有问题都会出现不同级别的问题

例如,您必须为每个事务设置适当的max_锁才能使用它们。因为即使是简单的select over parent表也会将SharedAccessLock放置在所有分区上,这并不是很好,但PG继承就是这样工作的

加上更高的查询计划时间——在我们的数据仓库中,我们有时会看到查询的计划时间,比如几分钟,而查询只需要几秒钟——这有点糟糕。。。但很难用它做任何事情,因为目前的PG计划员就是这样工作的


但利大于弊,因此我强烈建议使用您需要的任何分区粒度。

我曾使用过具有不同分区级别的系统。 通常,只要您对分区有检查约束,允许查询计划器为查询找到足够的分区,任何分区都是可以的。或者,对于某些特殊情况,您必须直接查询特定分区。否则,即使对于简单的查询,您也会看到对所有分区的顺序扫描

日常分区完全可以,不用担心。我使用基于PG的数据收集器处理事件,PG需要为每5分钟的数据设置分区,因为它每天收集几个TB

只有当您有几千或几十万个分区时,分区的数量才可能成为一个更大的问题——有了这个数量的分区,所有问题都会出现不同级别的问题

例如,您必须为每个事务设置适当的max_锁才能使用它们。因为即使是简单的select over parent表也会将SharedAccessLock放置在所有分区上,这并不是很好,但PG继承就是这样工作的

加上更高的查询计划时间——在我们的数据仓库中,我们有时会看到查询的计划时间,比如几分钟,而查询只需要几秒钟——这有点糟糕。。。但很难用它做任何事情,因为目前的PG计划员就是这样工作的

但优点仍然大于缺点,所以我强烈建议使用您需要的任何分区粒度