Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
    • Cloud Interconnect
    • Cloud Backup
    • Compute Cloud
    • Object Storage
    • Managed Service for Kubernetes®
    • Managed Service for PostgreSQL
    • Managed Service for ClickHouse®
    • Monium
    • Cloud CDN
    • Network Load Balancer
    • Virtual Private Cloud
    • Cloud DNS
    • Application Load Balancer
    • Yandex Cloud Router
    • Managed Service for MySQL®
    • Managed Service for Valkey™
    • Managed Service for Apache Spark™
    • Managed Service for OpenSearch
    • Managed Service for Apache Kafka®
    • Data Transfer
    • Yandex MPP Analytics Engine for PostgreSQL
    • Managed Service for YDB
    • SpeechKit
    • Yandex Identity Hub
    • Key Management Service
    • Certificate Manager
    • Yandex Lockbox
    • Audit Trails
    • Container Registry
    • Managed Service for Prometheus®
    • Message Queue
    • Identity and Access Management
    • Yandex Cloud Console
    • Resource Manager
    • Yandex Cloud Billing
    • Cloud Apps
    • Yandex AI Studio
    • Yandex BareMetal
    • Smart Web Security
    • Security Deck
    • Yandex Cloud Video
    • Stackland
    • Yandex StoreDoc
    • Yandex Managed Service for Apache Airflow®
    • Data Processing
    • Yandex MetaData Hub
    • Yandex WebSQL
    • DataLens
    • Yandex Search API
    • SpeechSense
    • DataSphere
    • Vision OCR
    • Translate
    • Cloud Registry
    • SmartCaptcha
    • Cloud Desktop
    • SourceCraft Code Assistant
    • Managed Service for GitLab
    • Cloud Functions
    • API Gateway
    • Yandex Cloud Postbox
    • Serverless Integrations
    • IoT Core
    • Serverless Containers
    • Cloud Notification Service
    • Yandex Query
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Sharded PostgreSQL
RU
  • Начало работы
    • Взаимосвязь ресурсов сервиса
    • Шардирование
    • Ключи шардирования
    • Выбор стратегии шардирования
    • Классы хостов
    • Хранилище в Sharded PostgreSQL
    • Резервные копии
    • Квоты и лимиты
    • Настройки Sharded PostgreSQL
    • Политика поддержки версий Sharded PostgreSQL
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений

В этой статье:

  • Проверка стратегии шардирования
  • Требования к архитектуре
  • Перебалансировка данных
  1. Концепции
  2. Выбор стратегии шардирования

Выбор стратегии шардирования

Статья создана
Yandex Cloud
Обновлена 21 января 2026 г.
Открыть в Markdown
  • Проверка стратегии шардирования
  • Требования к архитектуре
  • Перебалансировка данных

Sharded PostgreSQL — это система для горизонтального масштабирования PostgreSQL с помощью шардирования. Использование шардированной системы оправдано в следующих случаях:

  • база данных на начальном этапе будет занимать 2 ТБ и более;
  • пишущая нагрузка на начальном этапе превысит 5 тысяч записей в секунду (write RPS);
  • рост нагрузки и объема данных превысит ресурсы одного узла PostgreSQL менее чем за 10 лет.

Выбор стратегии шардирования зависит от структуры данных:

  • Используйте range-стратегию, если данные и запросы имеют естественную или логическую группировку по времени, географическим регионам или диапазонам ID. Эта стратегия позволяет проводить перебалансировку данных и является предпочтительной в большинстве случаев.
  • Используйте hash-стратегию, если данные не имеют естественной или логической группировки или необходимо, чтобы на начальном этапе данные распределялись по шардам равномерно.

Для изменения стратегии после запуска системы требуется перераспределить данные по шардам, поэтому перед запуском рекомендуется проверить выбранную стратегию.

Проверка стратегии шардированияПроверка стратегии шардирования

Sharded PostgreSQL поддерживает Shadow Mode (запись и воспроизведение нагрузки). В этом режиме роутер перехватывает и записывает все SQL-запросы к нешардированной базе данных. Затем запросы воспроизводятся на тестовой шардированной базе, что позволяет:

  • оценить производительность запросов;
  • выявить запросы, не содержащие ключ шардирования;
  • протестировать выбранную стратегию на реальной нагрузке.

Требования к архитектуреТребования к архитектуре

При проектировании шардированной системы соблюдайте следующие требования:

  • Включайте все столбцы ключа в условия WHERE.

    Исключения из этого правила:

    • Роутер выполняет виртуальные запросы, например:

      SELECT true;
      SELECT pg_is_in_recovery();
      SELECT now()
      
    • Ключ шардирования был передан в транзакции ранее, например:

      BEGIN;
      SET application_name = "smth";
      SELECT * FROM users WHERE id = 123;
      SELECT * FROM taxes;
      COMMIT;
      
    • Выполняется запрос к справочной таблице (reference table), например:

      SELECT * FROM taxes;
      
    • Ключ шардирования передается через виртуальный параметр (хинт), например:

      INSERT INTO test(id, age) VALUES (10, 16) /*__spqr__sharding_key: 30*/;
      
  • Индексируйте столбцы ключа для перемещения данных между шардами.

  • Не выполняйте JOIN между таблицами, данные которых находятся на разных шардах. Такой JOIN можно заменить одним из способов:

    • применить денормализацию данных;
    • объединить результаты нескольких запросов в приложении;
    • разместить справочные таблицы на каждом шарде;
    • использовать одинаковые ключи шардирования (colocation) для связанных таблиц, чтобы связанные данные находились на одном шарде.
  • Выносите аналитику в специализированные хранилища (ClickHouse® или Greenplum®) с помощью Yandex Data Transfer.

Перебалансировка данныхПеребалансировка данных

Для range-стратегии Sharded PostgreSQL позволяет выполнять перебалансировку данных, когда один из диапазонов данных становится «горячим», то есть получает непропорционально высокую нагрузку по сравнению с остальными диапазонами. Перебалансировка выполняется вручную и состоит из следующих этапов:

  1. Выявление «горячего» ключа или диапазона ключей, который приводит к неравномерному распределению данных по шардам.
  2. Добавление нового шарда в кластер Managed Service for Sharded PostgreSQL.
  3. Перемещение данных из «горячего диапазона» на новый шард с помощью команды DISTRIBUTE ... MOVE ... в консоли администратора.

Перебалансировка происходит без остановки работы системы.

Была ли статья полезна?

Предыдущая
Ключи шардирования
Следующая
Классы хостов
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»