pg_database_size 对于 Azure PostgreSQL 来说非常慢

pg_database_size is very slow for Azure PostgreSQL

我在 Azure PostgreSQL 服务器上有非常严重的行为。

我尝试使用下一个查询读取数据库大小:

SELECT CAST(pg_database_size(current_database()) * 1.0/(1024 * 1024) AS DECIMAL(12, 5))

但此查询运行时间很长,我的 C# 应用程序出现超时异常:

Exception while reading from stream; Unable to read data from the transport connection: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond.

我不知道为什么 pg_database_size 需要很多时间...

为了解决我的问题,我看到了两个选项:

  1. 使用 Azure PostgreSQL 服务器设置提高查询性能
  2. 将当前查询替换为具有某个结果的另一个查询

我愿意接受任何建议。 请给我任何关于如何快速正确地读取数据库大小的想法。

这里大同小异sql,直接在postgre上运行很好sql

SELECT pg_database.datname, pg_size_pretty(pg_database_size(pg_database.datname)) AS size FROM pg_database; --- 作为选项 #2 ?