【发布时间】:2011-10-23 13:35:12
【问题描述】:
考虑到 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 - 它在下面说(但我不知道这些天仍然适用多少):
Benjamin Arai 写道:
目前每个数据库的最大表数是多少?此外,是否 有更多的表会以任何方式降低性能吗?
在大多数情况下,答案是否定的。然而,一旦你接近 6 位数 表计数, pg_catalog 最终是相当庞大的。问题是 查询规划器必须检查每个查询的 pg_catalog 以查看什么 索引可用,统计数据和值分布是什么, 等,以建立最佳计划。在某些时候,一个非常大的 pg_catalog 可能会开始让您的系统陷入瘫痪。
...
William Yu 写道:
Benjamin Arai 写道:
目前每个数据库的最大表数是多少?此外,是否 有更多的表会以任何方式降低性能吗?
在大多数情况下,答案是否定的。然而,一旦你接近 6 位数 表计数, pg_catalog 最终是相当庞大的。
您还必须考虑使用 10 对性能的影响 数据库目录中的数千个文件。虽然有些较新 文件系统并没有特别担心,很多'em陷入困境 当目录中有超过几千个条目时进行查找。
【问题讨论】:
-
我认为没有人能回答这个问题。
标签: postgresql filesystems max ext4