我有一个庞大的数据库,它包含一对数字(A,B),每个数字的范围从0到10,000,并存储为浮点数。
如,
(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...
由于存储这些对的PostgreSQL表变得非常大,我决定partition it into inheriting sub-tables。我打算创建100个这样的表,每个表存储1000x1000的范围。
问题是这些数字往往是附近数字的大块。这意味着将来,一些表几乎是空的,一些表将占据数据库的很大一部分。不幸的是,未来配对的分布尚不清楚。
我正在寻找一种自动重新分区的方法。这意味着如果某个子表保存的对数超过特定数量,则会自动将其分为四个子表,依此类推。
我的问题是:
提前致谢,
亚当
答案 0 :(得分:2)
首先,如果表格已经很大,您确定分配对于未来的估算是不可靠的吗?今天完成的直方图会无用吗?
我认为即使递归继承是可能的,它也会为维护和规划者增加不必要的复杂性。
当你将它分区为100个表时,我希望你能自动生成分区并插入/更新规则/触发器。
最简单的方法可能是将数据从一个分区复制到临时表,删除它,在其位置创建4个分区并将数据复制回来。我不认为这种操作比递归分区更困难。
你也可以在PostgreSQL邮件列表上询问人们。他们是您可能获得的最好的专家,包括原创开发人员。