Algorithm PostgreSQL:自动分区表
我有一个巨大的数据库,它保存着成对的数字(a,B),每个数字的范围从0到10000,并以浮点数的形式存储 e、 g 因为存储这些对的PostgreSQL表变得相当大,所以我决定。我打算创建100个这样的表,每个表存储的范围为1000x1000 问题是,这些数字往往是由附近的大量数字组成的。这意味着在将来,有些表将几乎为空,有些表将保存数据库的很大一部分。不幸的是,未来配对的分布尚不清楚 我正在寻找一种自动重新分配表的方法。这意味着,如果某个子表包含超过特定数量的对,它将自动划分为四个子表,依此类推 我的问题是:Algorithm PostgreSQL:自动分区表,algorithm,postgresql,database-partitioning,Algorithm,Postgresql,Database Partitioning,我有一个巨大的数据库,它保存着成对的数字(a,B),每个数字的范围从0到10000,并以浮点数的形式存储 e、 g 因为存储这些对的PostgreSQL表变得相当大,所以我决定。我打算创建100个这样的表,每个表存储的范围为1000x1000 问题是,这些数字往往是由附近的大量数字组成的。这意味着在将来,有些表将几乎为空,有些表将保存数据库的很大一部分。不幸的是,未来配对的分布尚不清楚 我正在寻找一种自动重新分配表的方法。这意味着,如果某个子表包含超过特定数量的对,它将自动划分为四个子表,依此类
- 在PostgreSQL 8.3中是否可以进行递归分区和继承?索引和查询计划能理解它吗
- 如果子表太大,拆分它的最佳方法是什么?我应该指出,这不是一个实时数据库,所以每周停机几个小时是完全可以接受的
- 更新:我可能会将继承表拆分为四个表,以替换原始表(即直接从主表继承)。我将避免有多个继承级别,但有数千个if表直接从一个表继承。这种方法的优缺点是什么
Adam首先,如果表格已经很大,您确定未来的估计分布不可靠吗?今天做的柱状图有用吗 我认为,即使递归继承是可能的,它也会给模型增加不必要的复杂性,无论是维护还是规划 当您将它划分为100个表时,我希望您会自动生成分区并插入/更新规则/触发器 最简单的方法可能是将数据从一个分区复制到一个临时表,删除它,在其位置上创建4个分区,然后将数据复制回来。我认为这个操作不会比递归分区更困难
您也可以向PostgreSQL邮件列表的用户询问。他们是你能找到的最好的专家,包括原始开发人员。什么是“大”以及你想解决什么问题?分区很好,但只有当它对SELECT语句有意义时。它还可以方便地删除整个表中的所有数据,但这不是您每天都要做的事情。数亿条记录;B它确实是用于选择查询的,而且将来在多台计算机之间拆分数据库将非常容易。
(1, 9984.4), (2143.44, 124.243), (0.55, 0), ...