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