确定 Azure Cosmos DB for PostgreSQL 中的表和关系大小

适用对象: Azure Cosmos DB for PostgreSQL(由 PostgreSQL 的 Citus 数据库扩展提供支持)

在 PostgreSQL 中查找表大小的常用方法 pg_total_relation_size 大大低报了 Azure Cosmos DB for PostgreSQL 上分布式表的大小。 此函数在群集上所做的就是显示协调器节点上表的大小。 实际上,分布式表中的数据位于工作器节点(在分片中)而不是协调器节点上。 实际获得的分布式表大小的度量值是分片大小的总和。 Azure Cosmos DB for PostgreSQL 提供了用于查询此信息的帮助程序函数。

功能 返回
citus_relation_size(relation_name)
  • 表中实际数据(主分支)的大小。
  • 关系可以是表或索引的名称。
citus_table_size(relation_name)
citus_total_relation_size(relation_name)
  • citus_table_size 加上:

    • 索引的大小

这些函数类似于三个标准的 PostgreSQL 对象大小函数,除非它们不能连接到一个节点,那样会出错。

示例

下面演示如何列出所有分布式表的大小:

SELECT logicalrelid AS name,
       pg_size_pretty(citus_table_size(logicalrelid)) AS size
  FROM pg_dist_partition;

输出:

┌───────────────┬───────┐
│     name      │ size  │
├───────────────┼───────┤
│ github_users  │ 39 MB │
│ github_events │ 37 MB │
└───────────────┴───────┘

后续步骤