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

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

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

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

Функции SQL

Сегментирование

Имя Описание
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

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

Имя Описание
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 Перемещение сегментов заданной таблицы для равномерного их распределения между рабочими узлами

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

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

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

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

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

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

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

Имя Описание
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 Поиск идентификатора сегмента, связанного со значением столбца распределения

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

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

Имя Описание
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 Разрешение доступа к локальным таблицам в запросах рабочего узла

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

Имя Описание
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 Включение и отключение скрытия сегментов

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

Имя Описание
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 Максимальная продолжительность (в миллисекундах) для ожидания установления соединения

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

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

Deadlock

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

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

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

Имя Описание
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

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