我有一个巨大的数据库,其中包含成对的数字(A,B),每个数字的范围从 0 到 10,000 并存储为浮点数。
例如,
(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...
由于存储这些对的 PostgreSQL 表变得非常大,我决定将其划分为继承子表。我打算创建 100 个这样的表,每个表存储 1000x1000 的范围。
问题是这些数字往往是附近数字的大块。这意味着在未来,一些表将几乎是空的,而一些表将占据数据库的很大一部分。不幸的是,未来对的分布尚不清楚。
我正在寻找一种自动重新分区我的表的方法。这意味着如果某个子表包含的pairs超过特定数量,它将自动划分为四个子子表,依此类推。
我的问题是:
- PostgreSQL 8.3 中是否可以进行递归分区和继承?索引和查询计划会理解它吗?
- 一旦子表变得太大,拆分子表的最佳方法是什么?我应该指出,这不是一个实时数据库,所以每周几个小时的停机时间是完全可以接受的。
- 更新:我可能会将继承表拆分为四个表,以替换原来的表(即直接从主表继承)。我将避免拥有超过一级的继承,但如果表直接从一张表继承,则会有数千个。这种方法的优点和缺点是什么?
提前致谢,
亚当