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

8 投票
3 回答
5886 浏览
提问于 2025-04-16 04:10

我在PostgreSQL中创建了一个数据库,叫做testdb

在这个数据库里,我有一组通用的表,分别是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

我想这样做的原因是为了把多个大型相关数据集合分开存放。我需要定期更新单个数据集合,如果可以直接删除数据集合的表,然后重新创建一整套新表,这样会简单很多。此外,我还要提到,不同的数据集合适合放在同样的结构里,所以我可以用一个标识符把所有数据集合放在一套表里,而不是用不同的表来分开它们。

我想知道几件事:

  1. PostgreSQL对每个数据库的表数量有限制吗?
  2. 如果一个数据库里有很多表,会对性能有影响吗?
  3. 把数据集合放在不同的表集合中,和把它们都放在同一套表中,性能上有什么区别?比如,如果数据分散在多个表中,我可能需要写更多的查询来同时查询多个数据集合,而不是只在一套表里查询。

3 个回答

0

如果你的数据之间没有关系,我觉得你的表可以放在不同的模式(schema)里。比如,你可以使用 SET search_path TO schema1, public 这样的命令,这样你在查询的时候就不需要动态生成表名了。我打算在一个存储日志和其他跟踪信息的大数据库上试试这种结构。

如果你的操作系统有限制,或者目录的大小太大,你也可以更改你的 tablespace

3

1. PostgreSQL(一个数据库系统)本身并没有直接限制这个数量,但你的操作系统会有影响,这取决于最大目录的大小。

2. 这也可能和你的操作系统有关。有些文件系统在处理大目录时会变得比较慢。

3. 如果查询涉及到不同的表,PostgreSQL就没办法优化这些查询。所以,使用更少的表(或者只用一个表)会更高效。

15

PostgreSQL这个数据库系统本身没有太多的限制,真正限制你的往往是你的硬件设备,这也是你会遇到大部分问题的地方。http://www.postgresql.org/about/

在一个数据库里,你可以创建多达2的32次方的表,也就是超过40亿个表。

撰写回答