最大分区 PostgreSQL

Phi*_*ord 1 postgresql database-design partitioning

我有 400,000 条记录需要分区。记录将每年增加 100,000 条,这些新记录可能需要添加 1000 个新分区。

以下是我的一些担忧:

  • 多少个分区太多
  • 小分区是否坏(每个分区可能少于 150 条记录)
  • 大分区将有 10,000 条或更多记录
  • 分区是按字段创建的,而不是按日期创建的
  • 新记录可以每天添加到较大的分区,但较小的分区可能是每月一次
  • 可能需要合法地分离分区数据(某些情况但不是全部)

例子:

假设 100,000 条中的 10,000 条需要分成 100 条记录的分区,因此将创建 1000 个分区,并创建 9 个额外的分区,每个分区包含 10,000 条记录,总共 1009 个分区。

问题:

  • 这种方法行得通吗
  • 这是最好的方法吗,如果不是,还有什么其他想法

笔记:

  • 大多数记录将落入更大的分区

Cra*_*ger 7

您需要一个分区来存储这么多记录。不是 1000。当然不是 1000/年。这不是需要分区的问题。在我看来,您在完全陈述和分析问题之前已经决定了解决方案。

从字里行间看,听起来您正在实施一个多租户系统,并且已经确定分区是实现这一目标的方法。对?

如果是这样:错误的方法。从一张桌子开始。出于性能和维护原因,如果/何时需要进行分区。使用这种规模的数据库,您不太可能需要,它很小。

多少个分区太多

因为约束排除代码不是超级智能,所以尽量坚持低分区数。我最多喜欢几十个或几百个。

小分区是否坏(每个分区可能少于 150 条记录)

是的,在计划和执行时间方面非常浪费。

可能需要合法地分离分区数据(某些情况但不是全部)

分区和具有复合键的单个表有什么区别?我从来没有见过一个法律或监管代码可以降低到实际指定数据库结构的级别,除了 PCI 之外,而不是以这种方式。

详情请。

这是最好的方法吗,如果不是,还有什么其他想法

使用一个表、一个组合键和一些组合索引。如果有用/必要,请对子范围使用部分索引。