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


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

Это важно

Azure Cosmos DB для PostgreSQL больше не поддерживается для новых проектов. Не используйте эту службу для новых проектов. Вместо этого используйте одну из этих двух служб:

Обычный способ определения размеров таблиц в PostgreSQL, pg_total_relation_size существенно занижает размер распределённых таблиц в Azure Cosmos DB для PostgreSQL. Эта функция в кластере просто определяет размер таблиц на узле координатора. В действительности данные в распределенных таблицах находятся в рабочих узлах (в сегментах), а не в координаторе. Действительная величина распределенной таблицы определяется путем сложения размеров сегментов. Azure Cosmos DB для 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 │
└───────────────┴───────┘

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