Yandex Cloud
Поиск
Связаться с экспертомПопробовать бесплатно
  • Кейсы
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
  • Marketplace
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Искусственный интеллект
    • Безопасность
    • Инструменты DevOps
    • Бессерверные вычисления
    • Управление ресурсами
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Калькулятор цен
    • Тарифы
    • Акции и free tier
  • Кейсы
  • Документация
  • Блог
Создавайте контент и получайте гранты!Готовы написать своё руководство? Участвуйте в контент-программе и получайте гранты на работу с облачными сервисами!
Подробнее о программе
Проект Яндекса
© 2026 ТОО «Облачные Сервисы Казахстан»
Yandex Managed Service for Sharded PostgreSQL
RU
  • Начало работы
  • Управление доступом
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Публичные материалы
  • История изменений
    • Общие вопросы
    • Распределенные запросы
    • Подключение
    • Безопасность
    • Производительность
    • Миграция
    • Ограничения
    • Устранение неполадок
    • Все вопросы на одной странице
  1. Вопросы и ответы
  2. Миграция

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

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

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

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

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

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

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

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

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

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

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

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 ТОО «Облачные Сервисы Казахстан»