Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Algorithm PostgreSQL:自动分区表_Algorithm_Postgresql_Database Partitioning - Fatal编程技术网

Algorithm PostgreSQL:自动分区表

Algorithm PostgreSQL:自动分区表,algorithm,postgresql,database-partitioning,Algorithm,Postgresql,Database Partitioning,我有一个巨大的数据库,它保存着成对的数字(a,B),每个数字的范围从0到10000,并以浮点数的形式存储 e、 g 因为存储这些对的PostgreSQL表变得相当大,所以我决定。我打算创建100个这样的表,每个表存储的范围为1000x1000 问题是,这些数字往往是由附近的大量数字组成的。这意味着在将来,有些表将几乎为空,有些表将保存数据库的很大一部分。不幸的是,未来配对的分布尚不清楚 我正在寻找一种自动重新分配表的方法。这意味着,如果某个子表包含超过特定数量的对,它将自动划分为四个子表,依此类

我有一个巨大的数据库,它保存着成对的数字(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), ...