我的基本问题是:什么影响了性能\d
?
我有一个单独的(小)模式,在数据库服务器上管理,否则我没有更高的权限。服务器在其公共模式中拥有一个巨大的(十亿多行)数据库。我的单独模式提供了一些辅助信息,仅用于公共模式中数据的网页呈现。
编辑:实际上有超过 55 亿行,而且这只是最大的表之一(并且只花了 1.5 小时就完成了count(*)
!)。
当我\d
在 psql 提示符下执行一个简单的操作时,它真的很慢 - 当我计时时大约需要 6.5 秒。显然,数据库/数据库服务器负载很重,但是我应该让\d
系统管理员(他们通常不想被打扰)注意这种性能吗?(这是否意味着系统中存在明显错误?)我的架构中的其他所有内容都以毫秒为单位运行,因此它不会影响我的架构本身的性能。
无论我是否引起他们的注意,什么会影响 的性能\d
?公共模式有 985 个表。即便如此,这似乎是一个相当简单的查询;我希望它只查看表名称,而不查看表内容。
如果您
psql
使用-E
命令行选项运行,您将能够看到它在您发出 时发出的查询\d
。然后,您可以运行EXPLAIN (ANALYZE, BUFFERS)
该查询以查看它可能在哪里遇到困难。您还将看到它的性能不取决于数据大小,只取决于其中的对象数量pg_class
(以及,可能在较小程度上取决于模式数量)。这是我在我的系统上看到的: