Ограничения в Managed Service for Sharded PostgreSQL
-
Какие лимиты существуют для кластера Managed Service for Sharded PostgreSQL?
-
Какая политика повторных попыток (retry) используется в Sharded PostgreSQL?
-
Разрешены ли операции DDL (например,
ALTER TABLE,RENAME) в транзакциях?
Какие типы данных доступны для шардирования?
-
Целочисленные (
INT,BIGINT). -
Строки (
VARCHAR). -
UUID. -
Составные ключи.
-
Хеш-функции:
CITY,MURMUR(только для целых чисел).Важно
Пользовательские хеш-функции не поддерживаются.
Если вам не хватает какого-либо типа данных, вы можете завести issue в репозитории проекта на Github
Какие лимиты существуют для кластера Managed Service for Sharded PostgreSQL?
Количество роутеров и шардов в кластере Managed Service for Sharded PostgreSQL не ограничено.
Подробнее о квотах и лимитах в Managed Service for Sharded PostgreSQL.
Можно ли выполнять JOIN между шардами?
Нет. JOIN возможен только в пределах одного шарда. При работе со связанными данными используйте одинаковые ключи шардирования для связанных таблиц, чтобы данные находились на одном шарде.
Если вам нужно выполнять JOIN между шардами, рекомендуем использовать Yandex MPP Analytics for PostgreSQL.
Поддерживаются ли кросс-шардовые запросы?
Поддерживаются только для следующих случаев:
- Справочные таблицы (reference tables) с виртуальным параметром:
/* __spqr__engine_v2: true */. COPYс виртуальным параметром/* __spqr__allow_multishard: true */.- Транзакции, в которых передан DDL и виртуальный параметр
/* __spqr__default_route_behaviour: ALLOW */. - Запросы, к которым явно указан виртуальный параметр
/* __spqr__scatter_query: true */.
Виртуальные параметры можно задавать комментариями в SQL или через SET.
Какая политика повторных попыток (retry) используется в Sharded PostgreSQL?
Роутер не выполняет пользовательские запросы повторно. Пользователю нужно самостоятельно реализовать политику повторов, исходя из своей бизнес-логики.
Как Sharded PostgreSQL управляет лимитами подключений?
Лимит подключений задается отдельно для каждого пользователя в параметре conn_limit.
Есть ли дедупликация запросов?
Нет. Если клиент отключается и повторяет запрос, роутер обработает его как новый.
Разрешены ли операции DDL (например, ALTER TABLE, RENAME) в транзакциях?
Да, если включен /* __spqr__default_route_behaviour: ALLOW */.
В зависимости от ваших задач рекомендуется использовать виртуальный параметр:
- С однофазной фиксацией —
/* __spqr__commit_strategy: 1pc */. - С двухфазной фиксацией —
/* __spqr__commit_strategy: 2pc */.
Виртуальные параметры можно задавать комментариями в SQL или через SET.