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
  • Начало работы
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
    • Общие вопросы
    • Распределенные запросы
    • Подключение
    • Безопасность
    • Производительность
    • Миграция
    • Ограничения
    • Устранение неполадок
    • Все вопросы на одной странице
  1. Вопросы и ответы
  2. Миграция

Миграция данных в Managed Service for Sharded PostgreSQL

Статья создана
Yandex Cloud
Обновлена 29 мая 2026 г.
Открыть в Markdown
  • Можно ли шардировать по композитному ключу?

  • Можно ли создать "шард по умолчанию" для непривязанных ключей?

  • Как добавить новый шард и перебалансировать данные?

  • Как происходит перебалансировка данных при добавлении нового шарда?

  • Как загружать большие объемы данных?

  • Как ускорить миграцию больших объемов данных?

  • Что происходит при сбое во время миграции данных?

  • Как переименовать таблицу, сохранив ее доступность?

Можно ли шардировать по композитному ключу?Можно ли шардировать по композитному ключу?

Да. Для этого создайте композитный ключ:

CREATE DISTRIBUTION <имя_правила_шардирования> COLUMN TYPES integer, varchar;
ALTER DISTRIBUTION <имя_правила_шардирования> ATTACH RELATION orders DISTRIBUTION KEY user_id, order_date;

Подробнее о композитных ключах шардирования в документации SPQR.

Можно ли создать шард по умолчанию для непривязанных ключей?Можно ли создать шард по умолчанию для непривязанных ключей?

Да. Для этого используйте команду:

ALTER DISTRIBUTION <имя_правила_шардирования> ADD DEFAULT SHARD <имя_шарда>;

Подробнее о шардах по умолчанию в документации SPQR.

Как добавить новый шард и перебалансировать данные?Как добавить новый шард и перебалансировать данные?

  1. Создайте новый шард.
  2. Используйте команду SYNC REFERENCE TABLES для копирования справочных таблиц.
  3. Перераспределите диапазоны ключей. Используйте команды:
    • SPLIT KEY RANGE — чтобы разделить диапазон ключей.
    • REDISTRIBUTE KEY RANGE — чтобы перенести данные автоматически.

Как происходит перебалансировка данных при добавлении нового шарда?Как происходит перебалансировка данных при добавлении нового шарда?

При добавлении нового шарда нужно запустить ручной перенос данных с помощью команды REDISTRIBUTE KEY RANGE. В этом случае Sharded PostgreSQL перемещает небольшие диапазоны данных, чтобы минимизировать недоступность кластера на запись.

Как загружать большие объемы данных?Как загружать большие объемы данных?

Для загрузки больших объемов данных доступны два варианта:

  • COPY с виртуальным параметром /* __spqr__allow_multishard: true */.

    Например, для загрузки из CSV-файла:

    COPY <имя_таблицы> FROM 'data.csv' WITH DELIMITER ',' /* __spqr__allow_multishard: true */;
    

    Важно

    Использование COPY может приводить к высокой нагрузке на роутер. Если вы регулярно используете COPY, рекомендуется создать для этой задачи отдельный роутер.

  • Одновременная вставка нескольких строк в таблице (batch insert) с виртуальным параметром /* __spqr__engine_v2: true */. В таком случае роутер анализирует каждую строку, определяет целевой шард на основе ключа шардирования и преобразовывает запрос в отдельные команды INSERT для каждого шарда.

    Например, команда:

    INSERT INTO users (id, name) VALUES
      (1, 'Alice'),      -- отправляется на шард sh1
      (100, 'Bob'),      -- отправляется на шард sh2
      (2, 'Charlie')     -- отправляется на шард sh1
    /* __spqr__engine_v2: true */;
    -- NOTICE: send query to shard(s) : sh1,sh2
    

    будет преобразована в:

    • INSERT INTO users (id, name) VALUES (1, 'Alice'), (2, 'Charlie'); для шарда sh1.
    • INSERT INTO users (id, name) VALUES (100, 'Bob'); для шарда sh2.

Виртуальные параметры можно задавать комментариями в SQL или через SET.

Подробнее о вставке больших объемов данных в документации SPQR.

Как ускорить миграцию больших объемов данных?Как ускорить миграцию больших объемов данных?

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

Что происходит при сбое во время миграции данных?Что происходит при сбое во время миграции данных?

Sharded PostgreSQL обеспечивает атомарность на уровне диапазона. При сбое данные могут временно находиться на обоих шардах. Операция будет отменена или возобновлена после восстановления.

Как переименовать таблицу, сохранив ее доступность?Как переименовать таблицу, сохранив ее доступность?

Выполните последовательность ALTER TABLE в одной транзакции. Для включения этой возможности используйте виртуальный параметр /* __spqr__multishard_ddl: true */.

ALTER TABLE ... /* __spqr__multishard_ddl: true */;

Действие не транзакционно. Переименование таблиц требует осторожности.

Виртуальные параметры можно задавать комментариями в SQL или через SET.

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

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