Распределенный API SQL для PostgreSQL в Azure Cosmos DB

Important

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

Azure Cosmos DB for PostgreSQL включает функции, выходящие за рамки стандартного PostgreSQL. Ниже приведен упорядоченный справочник по функциям и параметрам конфигурации для следующих задач:

  • Распараллеливание выполнения запросов по сегментам
  • Управление сегментированными данными между несколькими серверами
  • Сжатие данных с помощью хранилища на базе столбцов
  • Автоматизация секционирования временных рядов

Функции SQL

Sharding

Name Description
alter_distributed_table Изменение столбца распределения, числа сегментов или свойств совместного размещения распределенной таблицы
citus_copy_shard_placement Восстановление неактивного размещения сегментов с использованием данных из работоспособного размещения
citus_schema_distribute Преобразование схемы PostgreSQL в распределенную схему
citus_schema_undistribute Отмена действия citus_schema_distribute
create_distributed_table Преобразование таблицы PostgreSQL в распределенную (сегментированную) таблицу
create_reference_table Обеспечение синхронизации полных копий таблицы на всех узлах
citus_add_local_table_to_metadata Добавление локальной таблицы в метаданные для включения запроса с любого узла
isolate_tenant_to_new_shard Создание сегмента для хранения строк с конкретным отдельным значением в столбце распределения
truncate_local_data_after_distributing_table Усечение всех локальных строк после распределения таблицы
undistribute_table Отмена действия create_distributed_table или create_reference_table

Повторная балансировка сегментов

Name Description
citus_add_rebalance_strategy Добавление строки в pg_dist_rebalance_strategy
citus_move_shard_placement Обычно используется неявно при повторной балансировке сегментов, а не вызывается напрямую администратором базы данных
citus_set_default_rebalance_strategy Задание стратегии, указанной ее аргументом, как стратегии по умолчанию, которая будет выбираться при повторной балансировке сегментов
get_rebalance_progress Отслеживание перемещений, запланированных и выполняемых функцией rebalance_table_shards
get_rebalance_table_shards_plan Вывод запланированных перемещений сегментов rebalance_table_shards без их выполнения
rebalance_table_shards Перемещение сегментов заданной таблицы для равномерного их распределения между рабочими узлами

Совместное размещение

Name Description
create_distributed_function Выполнение функции на рабочих узлах рядом с совместно размещенными сегментами
update_distributed_table_colocation Изменение или прерывание совместного размещения распределенной таблицы

Хранение данных по столбцам

Name Description
alter_columnar_table_set Изменение параметров в таблице на основе столбцов
alter_table_set_access_method Преобразование таблицы между кучей или хранилищем столбцов

Секционирование временных рядов

Name Description
alter_old_partitions_set_access_method Изменение метода хранения секций
create_time_partitions Создание секций заданного интервала для покрытия определенного диапазона времени
drop_old_time_partitions Удаление всех секций, интервалы которых выходят за рамки заданной метки времени

Информационный

Name Description
citus_get_active_worker_nodes Получение имен узла и номеров портов активных рабочих узлов
citus_relation_size Возвращает дисковое пространство, используемое всеми сегментами указанной распределенной таблицы
citus_remote_connection_stats Число активных соединений к каждому удаленному узлу
citus_stat_statements_reset Удаление всех строк из citus_stat_statements
citus_table_size Возвращает дисковое пространство, используемое всеми сегментами указанной распределенной таблицы, за исключением индексов
citus_total_relation_size Возвращает общее дисковое пространство, используемое всеми сегментами указанной распределенной таблицы, включая все индексы и данные TOAST
column_to_column_name Преобразование столбца partkey таблицы pg_dist_partition в имя текстового столбца
get_shard_id_for_distribution_column Поиск идентификатора сегмента, связанного со значением столбца распределения

Параметры сервера

Выполнение запросов

Name Description
citus.all_modifications_commutative Разрешение всем командам запрашивать совмещаемую блокировку
citus.count_distinct_error_rate Настройка частоты ошибок для приблизительного подсчета postgresql-hll
citus.enable_repartition_joins Разрешение операций JOIN, выполняемых не со столбцами распределения
citus.enable_repartitioned_insert_select Разрешение повторного секционирования строки из инструкции SELECT и их передачи между рабочими узлами для вставки
citus.limit_clause_row_fetch_count Количество строк для выборки на каждую задачу для оптимизации предложения limit
citus.local_table_join_policy Место для перемещения данных при создании соединения между локальными и распределенными таблицами
citus.multi_shard_commit_protocol Протокол фиксации для использования при выполнении операции COPY в распределенной хэш-таблице
citus.propagate_set_commands Определяет, какие команды SET распространяются от координатора к рабочим узлам
citus.create_object_propagation Поведение инструкций CREATE в транзакциях для поддерживаемых объектов
citus.use_citus_managed_tables Разрешение доступа к локальным таблицам в запросах рабочего узла

Информационный

Name Description
citus.explain_all_tasks Отображение всех задач в выходных данных EXPLAIN
citus.explain_analyze_sort_method Метод сортировки задач в выходных данных EXPLAIN ANALYZE
citus.log_remote_commands Запись запросов, которые координатор отправляет на рабочие узлы
citus.multi_task_query_log_level Уровень ведения журнала для любого запроса, который создает больше одной задачи
citus.stat_statements_max Максимальное число строк, сохраняемых в citus_stat_statements
citus.stat_statements_purge_interval Частота, с которой управляющая программа обслуживания удаляет записи из citus_stat_statements, которые не совпадают в pg_stat_statements
citus.stat_statements_track Включение или отключение отслеживания инструкций
citus.show_shards_for_app_name_prefixes Позволяет отображать сегменты для выбранных клиентов, которые хотят их просмотреть
citus.override_table_visibility Включение и отключение скрытия сегментов

Управление подключениями между узлами

Name Description
citus.executor_slow_start_interval Время ожидания в миллисекундах между открытием подключений к одному и тому же рабочему узлу
citus.force_max_query_parallelization Открытие максимально возможного числа подключений
citus.max_adaptive_executor_pool_size Максимальное число подключений рабочих узлов на сеанс
citus.max_cached_conns_per_worker Количество соединений, остающихся открытыми для ускорения последующих команд
citus.node_connection_timeout Максимальная продолжительность (в миллисекундах) для ожидания установления соединения

Передача данных

Name Description
citus.enable_binary_protocol Использование формата двоичной сериализации PostgreSQL (если применимо) для перемещения данных с рабочими узлами
citus.max_intermediate_result_size Размер (в КБ) промежуточных результатов для CTE и вложенных запросов, которые не могут быть переданы

Deadlock

Name Description
citus.distributed_deadlock_detection_factor Время ожидания перед проверкой распределенных взаимоблокировок
citus.log_distributed_deadlock_detection Указание того, следует ли записывать в журнал на сервере обработку, связанную с обнаружением распределенной взаимоблокировки

Системные таблицы

Узел координатора содержит таблицы метаданных и представления для просмотра свойств данных и действий запросов в кластере.

Name Description
citus_dist_stat_activity Распределенные запросы, выполняемые на всех узлах
citus_lock_waits Запросы, заблокированные во всем кластере
citus_shards Расположение каждого сегмента, тип таблицы, к которой он принадлежит, и его размер
citus_stat_statements Статистика по выполнению запросов и объектам, к которым они обращены
citus_tables Сводка по всем распределенным и ссылочным таблицам
citus_worker_stat_activity Запросы к рабочим узлам, включая задачи по отдельным сегментам
pg_dist_colocation Указание того, какие сегменты таблиц следует расположить вместе
pg_dist_node Сведения о рабочих узлах в кластере
pg_dist_object Объекты, такие как типы и функции, которые были созданы на узле-координаторе и распространены на рабочие узлы
pg_dist_placement Расположение реплик сегментов на рабочих узлах
pg_dist_rebalance_strategy Стратегии, с помощью которых rebalance_table_shards определяет место для перемещения сегментов
pg_dist_shard Таблица, столбец распределения и диапазоны значений для каждого сегмента
time_partitions Сведения о каждой секции, управляемой такими функциями, как create_time_partitions и drop_old_time_partitions

Дальнейшие действия