Yandex.Cloud
  • Сервисы
  • Почему Yandex.Cloud
  • Сообщество
  • Решения
  • Тарифы
  • Документация
  • Связаться с нами
Подключиться
Yandex Database
  • Начало работы
    • Обзор
    • Создание базы данных
    • YQL
      • Работа с данными
      • Работа с YDB CLI
      • Работа с YDB SDK
    • Document API
      • Работа с данными
      • Работа с инструментами AWS
        • Настройка окружения
  • Пошаговые инструкции
    • Работа с YDB CLI
      • Структура и описание команд YDB CLI
      • Получение информации об объекте схемы
      • Потоковое чтение таблицы
      • Работа со вторичными индексами
    • Использование плана запроса и AST
    • Управление базами данных
    • Подключение к базе данных
    • Управление таблицами
    • Чтение и запись данных
    • Работа со вторичными индексами
  • Работа с SDK
  • Концепции
    • Обзор
    • Модель данных и схема
    • Режимы работы Serverless и Dedicated
    • Типы данных
    • Транзакции
    • Вторичные индексы
    • Time to Live (TTL)
    • Термины и определения
    • Квоты и лимиты
  • Управление доступом
  • Правила тарификации
    • Обзор
    • Бессерверный режим
    • Режим с выделенными инстансами
  • Рекомендации
    • Проектирование схемы
    • Партицирование таблиц
    • Вторичные индексы
    • Постраничный вывод
    • Загрузка больших объемов данных
    • Использование таймаутов
  • YDB API и справочник
    • Ограничения базы данных
    • Обработка ошибок в API
  • HTTP API, совместимый с Amazon DynamoDB
    • Справочник API
      • Все методы
      • Actions
        • BatchGetItem
        • BatchWriteItem
        • CreateTable
        • DeleteItem
        • DeleteTable
        • DescribeTable
        • GetItem
        • ListTables
        • PutItem
        • Query
        • Scan
        • TransactGetItems
        • TransactWriteItems
        • UpdateItem
      • Общие ошибки
  • Справочник YQL
    • Обзор
    • Типы данных
      • Простые
      • Опциональные
      • Контейнеры
      • Специальные
    • Синтаксис
      • Неподдерживаемые конструкции
      • Работа с текстовым представлением типов данных
      • Выражения
      • CREATE TABLE
      • DROP TABLE
      • INSERT INTO
      • UPSERT INTO
      • REPLACE INTO
      • UPDATE
      • DELETE
      • SELECT
      • GROUP BY
      • JOIN
      • FLATTEN
      • ACTION
      • DISCARD
      • PRAGMA
      • DECLARE
      • OVER, PARTITION BY и WINDOW
    • Встроенные функции
      • Базовые
      • Агрегатные
      • Оконные
      • Для работы со списками
      • Для работы со словарями
      • Для работы с JSON
      • Для работы со структурами
      • Для работы с типами
    • Предустановленные пользовательские функции
      • HyperScan
      • Pcre
      • Pire
      • Re2
      • String
      • Unicode
      • Datetime
      • Url
      • Ip
      • Digest
      • Math
      • Histogram
    • Работа с текстовым представлением типов данных
  • Туториал YQL
    • Обзор
    • Создание таблицы
    • Добавление данных в таблицу
    • Выборка данных из всех колонок
    • Выборка данных из определенных колонок
    • Сортировка и фильтрация
    • Агрегирование данных
    • Дополнительные условия выборки
    • Объединение таблиц с помощью JOIN
    • Вставка и модификация данных с помощью REPLACE
    • Вставка и модификация данных с помощью UPSERT
    • Вставка данных с помощью INSERT
    • Обновление данных с помощью UPDATE
    • Удаление данных
    • Добавление и удаление колонок
    • Удаление таблицы
  • Обслуживание
    • Резервное копирование
  • Диагностика
    • Системные таблицы
  • Вопросы и ответы
    • Общие вопросы
    • Ошибки
    • YQL
    • Все вопросы на одной странице
  • Публичные материалы
  1. Рекомендации
  2. Партицирование таблиц

Рекомендации по партицированию таблиц

    Таблицы в YDB отсортированы по возрастанию первичного ключа. Партицирование таблиц осуществляется путём разбиения диапазона значений ключа на последовательные непересекающиеся диапазоны - партиции.

    Благодаря партицированию данные таблицы могут распределяться по множеству устройств хранения, а нагрузка при работе с таблицей может задействовать больше процессорных ядер и пропускной способности сети. Вместе с тем слишком большое количество партиций в таблице может добавлять накладные расходы по использованию памяти и процессорного времени. Таким образом оптимальное партиционирование прямым образом влияет на эффективность выполнения запросов. Для достижения оптимального партицирования в YDB есть как средства для задания первоначального разбиения таблицы при её создании, так и способы последующего автоматического партиционирования.

    При создании таблицы можно задать первоначальное партицирование одним из 2 способов:

    • Задать равномерное партицирование по первой колонке первичного ключа, если эта колонка имеет тип UInt32 или UInt64. В этом случае необходимо явно задать количество партиций.
    • Задать точные ключи партицирования, которые определят количество и границы первоначальных партиций.

    YDB поддерживает 2 способа автопартицирования таблиц:

    • по размеру данных;
    • по нагрузке на даташард (даташард - компонент системы обслуживающий партицию таблицы).

    Режимы автопартицирования могут быть включены как по отдельности, так и вместе. Оба режима могут производить разбиение одной партиции на две и слияние нескольких партиций в одну. Возможность разбиения или слияния ограничивается настройками таблицы MIN_PARTITIONS и MAX_PARTITIONS. При разбиении партиции её диапазон ключей делится на 2 новых диапазона, и данные этих диапазонов образуют новые партиции. Слияние может происходить для нескольких соседних диапазонов, при этом данные нескольких партиций логически сливаются в одну партицию.

    Автопартицирование по размеру параметризуется настройкой размера партиции, при достижении которого происходит её разбиение. По умолчанию это значение равно 2ГБ. Выбор ключа для разбиения делается на основании гистограммы распределения размера данных в партиции по поддиапазонам ключей. Если же суммарный размер данных в смежных партициях становится меньше половины от настройки размера, то эти партиции сливаются.

    Срабатывание автопартицирования по нагрузке определяется потреблением CPU даташардом обслуживающим партицию. Все даташарды следят за своим потреблением CPU. Если в какой-то момент времени обнаруживается высокое (>50%) потребление, происходит разбиение партиции. Для выбора ключа используется статистика по обращениям к ключам своей партиции.

    Language
    Вакансии
    Политика конфиденциальности
    Условия использования
    © 2021 ООО «Яндекс.Облако»