我有 400,000 条记录需要分区。记录将每年增加 100,000 条,这些新记录可能需要添加 1000 个新分区。
以下是我的一些担忧:
- 多少个分区太多了
- 小分区不好(每个分区的记录可能少于 150 条)
- 大分区将是 10,000 或更多记录
- 分区是按字段而不是日期创建的
- 新记录可以每天添加到较大的分区,但较小的分区可能是每月一次
- 可能需要合法地分离分区数据(某些情况但不是全部)
例子:
假设 100,000 个中的 10,000 个需要分成 100 个记录的分区,因此将创建 1000 个分区并创建 9 个额外的分区,每个分区有 10,000 个记录,总共 1009 个分区。
问题:
- 这种方法行得通吗
- 这是最好的方法吗,如果不是,还有什么其他想法
笔记:
- 大多数记录将落入较大的分区
这么多记录需要一个分区。不是 1000。当然不是 1000/年。这不是需要分区的问题。在我看来,您在完全陈述和分析问题之前已经决定了解决方案。
从字里行间看,听起来您正在实施一个多租户系统,并且已经决定分区是实现这一目标的方法。正确的?
如果是这样:错误的方法。从一张桌子开始。如果/当您出于性能和维护原因需要时进行分区。使用这种规模的数据库,您几乎不可能需要,它很小。
因为约束排除代码不是超级聪明,所以尽量坚持低分区数。我最多喜欢几十或几百。
是的,在计划和执行时间方面非常浪费。
分区和具有复合键的单个表有什么区别?我从来没有见过一个法律或监管代码会下降到实际指定数据库结构的级别,除了可能是 PCI,而且不是以这种方式。
请详细说明。
使用一个表、一个复合键和一些复合索引。如果有用/必要,请对子范围使用部分索引。