假设 pgsql 在文件系统上为每个表存储 1 个文件并在 pg_catalog 中搜索每个查询以进行查询计划,那么在单个 pgsql 数据库中可以保持良好性能的最大表数是多少?
EG:pgsql 可以处理单个数据库中的 100 万个表吗?假设使用的文件系统是 ext4 并且每个表包含的数据非常少,因此磁盘存储容量过大不是问题。问题实际上来自 (1) 文件系统上有 100 万个文件的影响和 (2) pg_catalog 中有 100 万个条目的影响。
从这个线程(2005),http ://postgresql.1045698.n5.nabble.com/GENERAL-Maximum-number-of-tables-per-database-and-slowness-td1853836.html - 它在下面说(但我不知道这些天有多少仍然适用):
本杰明·阿拉伊写道:
当前每个数据库的最大表数是多少?此外,拥有更多表会以任何方式降低性能吗?
大多数情况下,答案是否定的。但是,一旦您获得接近 6 个数字的表数,pg_catalog 最终会变得非常庞大。问题是查询计划程序必须检查每个查询的 pg_catalog 以查看可用的索引、统计信息和值分布等,以便构建最佳计划。在某些时候,一个非常大的 pg_catalog 可能会开始使您的系统陷入困境。
...
William Yu <[隐藏的电子邮件]> 写道:
本杰明·阿拉伊写道:
当前每个数据库的最大表数是多少?此外,拥有更多表会以任何方式降低性能吗?
大多数情况下,答案是否定的。但是,一旦您获得接近 6 个数字的表数,pg_catalog 最终会变得非常庞大。
您还必须考虑在数据库目录中拥有数万个文件对性能的影响。虽然一些较新的文件系统对此并不特别担心,但当目录中有超过几千个条目时,很多人在查找时会陷入困境。