Поделиться через


Определение размера таблицы и отношения в Azure Cosmos DB для PostgreSQL

Область применения: Azure Cosmos DB для PostgreSQL (на базе расширения базы данных Citus до PostgreSQL)

Обычный способ поиска размеров таблиц в PostgreSQL, pg_total_relation_sizeрезко подсчитывает размер распределенных таблиц в Azure Cosmos DB для PostgreSQL. Все, что эта функция выполняется в кластере, заключается в том, чтобы показать размер таблиц на узле координатора. В действительности данные в распределенных таблицах находятся в рабочих узлах (в сегментах), а не в координаторе. Действительная величина распределенной таблицы определяется путем сложения размеров сегментов. Azure Cosmos DB для PostgreSQL предоставляет вспомогательные функции для запроса этих сведений.

Function Возвраты
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 │
└───────────────┴───────┘

Следующие шаги