PostgreSQL数据库可以拥有的表的数量是否有限制?

PostgreSQL数据库可以拥有的表的数量是否有限制?

问题描述:

我在PostgreSQL中创建了一个数据库,我们称之为testdbPostgreSQL数据库可以拥有的表的数量是否有限制?

我有一个通用的一组表这个数据库里面,xxx_table_onexxx_table_twoxxx_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. 与将它们全部保存在同一组中的情况相比,对保存不同组表中的数据集的性能有何影响,例如,如果我希望一次查询多个数据集合时,我认为需要编写更多的查询,当数据分散在表中时,与仅有一组表相比。
+1

定义“大”。创建和删除表通常是错误的方法。 – mpen 2010-09-15 07:54:12

+5

做。不。做。这个。这是一个可怕的设计破解。许多人尝试它 - 每个尝试它的人都感到遗憾。使用键值作为表格内的列;不要像这样创建表格。 – 2010-09-15 10:11:21

+0

大可能是约1,000.000 - 10,000,000条记录。不是那么大,但是每个数据收集是一个预处理的数据收集,每月更新一次或两次。 – sizeight 2010-09-15 10:20:36

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

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

+0

本回复中提到的结论是PostgreSQL社区贡献者研究的一个荣誉,参见[PGCon 2013](http://www.pgcon.org/2013/schedule/attachments/283_Billion_Tables_Project-PgCon2013.pdf) – pazfernando 2014-09-17 00:44:59

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

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

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