PostgreSQL数据库可以有多少个表限制?

时间:2010-09-15 07:15:49

标签: python mysql database database-design postgresql

我在PostgreSQL中创建了一个数据库,我们称之为 testdb

我在此数据库中有一组通用表, xxx_table_one xxx_table_two xxx_table_three

现在,我有Python代码,我希望动态创建并删除这3个表的“集合”到我的数据库中,表名中的唯一标识符区分不同的“集合”,例如,

设置1
testdb.aaa_table_one
testdb.aaa_table_two
testdb.aaa_table_three

设置2
testdb.bbb_table_one
testdb.bbb_table_two
testdb.bbb_table_three

我想这样做的原因是让相关数据的多个LARGE数据集合彼此分开。我需要定期覆盖单个数据集合,如果我们可以删除数据集合表并重新创建一组完整的新表,这很容易。另外,我不得不提一下,不同的数据集合适用于相同的模式,因此我可以使用标识符将所有数据集合保存在一组表中,以区分数据集合,而不是使用不同的表格将它们分开。

我想知道,有些事情

  1. PostgreSQL是否限制每个数据库的表数?
  2. 在1个数据库中拥有大量表格会对性能产生什么影响?
  3. 与在同一组中保存数据集合相比,在不同的表格集中保存数据集合对性能的影响是什么?如果我想在数据分布在表中时一次查询多个数据集合,而不是只有一组表格,我想需要编写更多查询。

3 个答案:

答案 0 :(得分:14)

PostgreSQL没有很多限制,你的硬件更受限制,这是你遇到大多数问题的地方。 http://www.postgresql.org/about/

您可以在一个数据库中拥有2 ^ 32个表,超过40亿个。

答案 1 :(得分:2)

  1. PostgreSQL对此没有直接限制,你的操作系统确实(它取决于最大目录大小)
  2. 这可能还取决于您的操作系统。对于大型目录,某些文件系统会变慢。
  3. 如果查询跨越不同的表,PostgreSQL将无法优化查询。因此,使用较少的表(或单个表)应该更有效率

答案 2 :(得分:0)

如果您的数据不相关,我认为您的表可能位于不同的模式中,然后您将使用SET search_path TO schema1, public,这样您就不必在查询中动态生成表名。我打算在一个存储日志和其他跟踪信息的大型数据库上尝试这种结构。

如果您的操作系统有限制或受到大目录大小的影响,您也可以更改tablespace