BI Consult Desktop Logo BI Consult Mobile Logo
  • Russian BI Исследование российских bi
  • Перейти на Fine BI
  • Контакты
  • +7 812 334-08-01
    +7 499 608-13-06
  • Отправить сообщение
  • Главная
  • Продукты Эксперт-BI
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Сельское хозяйство
    • Энергетика
    • FMCG
    • Девелоперы
    • Маркетплейсы
    • Пищевая промышленность
    • Фармацевтика
    • Построение Data Platform
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и FP&A
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • IBP
    • ИТ (CIO)
    • Закупки
  • Платформы
    • Системы бизнес-анализа (BI)
    • Интегрированное бизнес-планирование (IBP)
    • Хранилища данных (DWH / Lakehouse)
    • Каталоги данных (Data Catalog)
    • Системы ETL и ELT
    • AI / Исскуственный интеллект
    • Шина данных (ESB)
    • Система управления мастер-данными (MDM)
    • Семантический слой
  • Услуги
    • Переход на отечественные BI и DWH системы
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений и DWH
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Курсы
    • Учебный курс Информационная грамотность (Data Literacy)
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Greenplum
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt (Data Build Tool)
  • Компания
    • Руководство
    • Новости
    • Клиенты
    • Карьера
    • Скачать
    • Контакты

BI

  • FineBI
  • FineReport
  • FineDataLink
  • FineChatBI (FineAI)
  • Коннекторы данных из 1С в BI
  • Airflow / Nifi
  • Visiology
  • PIX BI
  • Modus BI
  • Yandex.DataLens
  • Open-source BI: Superset/Metabase
  • Luxms BI
  • AW BI + Alpha BI
  • FlyBI + Форсайт. Аналитическая Платформа
  • Loginom
  • Триафлай
  • AI / Исскуственный интеллект
  • Optimacros
  • Навигатор BI
  • Семантический слой

СУБД

  • Arenadata
  • ClickHouse
  • Greenplum
  • Postgres Professional
  • TData

Другое

  • Построение Data Platform
    • Аналитическое хранилище данных
    • Data Lake и Data Engineering
    • Подробнее про Data Lake
    • Внедрение Lakehouse
      • Apache Doris
      • StarRocks
      • Trino
    • Миграция витрин из пропиетарных DWH на новый стек
    • Учебный курс "Современная архитектура хранилища данных"
Главная » Российские платформы современного стека хранения, обработки и анализа данных » Хранилища данных (DWH / Lakehouse) » ClickHouse » Как работают первичные ключи Clickhouse

Как работают первичные ключи Clickhouse

Система индексирования и хранения данных Clickhouse довольно сложная, что обеспечивает непревзойденную производительность   СУБД. При создании таблицы MergeTree в первую очередь необходимо выбрать первичный ключ, который как раз и будет влиять на производительность большинства аналитических запросов. Как работают эти первичные ключи? Как выбрать наиболее подходящий? Давайте разбираться вместе!

 

Указываем первичный ключ

Каждая таблица MergeTree может иметь только один первичный ключ, который должен быть указан при создании таблицы:

CREATE TABLE test
(
    `dt` DateTime,
    `event` String,
    `user_id` UInt64,
    `context` String
)
ENGINE = MergeTree
PRIMARY KEY (event, user_id, dt)
ORDER BY (event, user_id, dt)

 

В данном случае  мы создали первичный ключ для 3 столбцов в следующем порядке: event, user_id, dt. Обратите внимание на то, что первичный ключ должен быть таким же, как и ключ сортировки (заданный выражением ORDER BY) или представлять собой его префикс.

Ключ сортировки определяет порядок, в котором данные будут храниться на диске, а первичный ключ определяет то, как данные будут структурированы для выполнения запросов. Обычно они совпадают (в этом случае Вы можете опустить выражение PRIMARY KEY, Clickhouse возьмет эту информацию из выражения ORDER BY).

 

Гранулы

Clickhouse логически разделяет каждый набор данных на группы или гранулы:

 

Количество гранул определяется автоматически в зависимости от настроек таблицы. По умолчанию размер гранулы составляет 8192 записи, поэтому количество гранул для нашей таблицы будет равно:

 

Гранула – это что-то вроде виртуальной «минитаблицы» с небольшим количеством записей (по умолчанию 8192), которые являются подмножеством всех записей основной таблицы.

Каждая гранула хранит в себе строки в отсортированном порядке, который определяется при создании таблицы выражением ORDER BY:

 

Первичные ключи и индексы

Первичный ключ хранит только первую строку каждой гранулы:

 

Именно поэтому Clickhouse работает так быстро. Вместо того чтобы хранить все значения, он сохраняет только их часть, именно поэтому первичные ключи такие короткие. Вместо того, чтобы искать отдельные строки, Clickhouse сначала находит гранулы, а затем выполняет их полное сканирование (что очень эффективно ввиду небольшого размера каждой гранулы)

:

 

Производительность запросов

Занесем в нашу таблицу 50 млн случайных  записей:

INSERT INTO test
SELECT * FROM generateRandom(
  'dt datetime, event Text, user_id UInt64, context Text'
) LIMIT 50000000;

 

Как указано выше, первичный ключ нашей таблицы состоит из 3 столбцов:

 

Clickhouse сможет использовать первичный ключ для поиска данных, если в запросе мы будем использовать столбец (столбцы), входящий в его состав:

 

Итак, в результате поиска по определенному значению столбца мы получили только одну гранулу, что можно подтвердить с помощью EXPLAIN:

 

Так произошло  потому, для фильтрации релевантных гранул вместо сканирования всей таблицы Clickouse использовал только индекс первичного ключа. Мы также можем использовать в запросах несколько столбцов из первичного ключа:

 

Если мы будем использовать столбцы, не входящие в состав первичного ключа, то для того, чтобы Clickhouse мог найти интересующие нас данные, ему придется просканировать всю таблицу:

 

В то же самое время, если мы будем использовать столбец(ы) из первичного ключа, но пропустим начальный столбец(ы), Clickhouse не сможет полностью использовать индекс первичного ключа:

 

В каких случаях используется индекс первичного ключа

Clickhouse использует индекс первичного ключа в следующих случаях:

  • Запрос WHERE или ORDER содержит первый столбец первичного ключа.
  • Запрос WHERE содержит первые X столбцов первичного ключа, а ORDER (если есть)  - следующие столбцы первичного ключа.
  • Запрос WHERE содержит все столбцы первичного ключа.

 

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

 

Заключение

Учитывая тот факт, что Clickhouse использует высокоинтеллектуальную систему структурирования и сортировки данных, правильный выбор первичного ключа поможет сэкономить ресурсы и существенно повысить производительность запросов. При выборе столбцов первичного ключа следуйте нескольким простым правилам:

  • Выбирайте только те столбцы, которые планируете использовать в большинстве запросов;
  • Определите порядок, который будет охватывать большинство случаев частичного использования первичного ключа (например, в запросе используется 1 или 2 столбца, а первичный ключ содержит 3).
  • Если Вы не уверены, используйте сначала столбцы с низкой кардинальностью, а затем  - столбцы с высокой кардинальностью. Благодаря этому сжатие данных пройдет более эффективно.

 

Узнать стоимость решенияЗапросить видео презентацию

← Предыдущая статья
ClickHouse и видеоаналитика
Следующая статья →
Конвертация часовых поясов на аналитической платформе, основанной на ClickHouse
Запросить видео презентацию Запросить доступ к демо стенду online Узнать стоимость лицензий

Задать вопрос

loading...

Решения

Анализировать ФинансыУвеличивайте ПродажиОптимальный Склад и ЛогистикаМаркетинговые Метрики

Клиенты
  • Банк "Санкт-Петербург" - это универсальный коммерческий банк, предоставляющий полный спектр финансовых услуг для частных и корпоративных клиентов. Банк основан в 1990 году и имеет генеральную лицензию Банка России на осуществление банковских операций. Сеть банка включает более 170 офисов и отделений, а также свыше 1000 банкоматов и терминалов в Санкт-Петербурге, Москве и других регионах.

  • Русклимат
    Русклимат — международный торгово-производственный холдинг, концентрирующий опыт ведущих мировых производителей индустрии климата, мощный потенциал конструкторских бюро и лабораторий индустриального дизайна.
     
    Компания образована в 1996 году. За более чем двадцатилетнюю историю Русклимат прошел путь от локальной компании до мощной вертикально-интегрированной многопрофильной структуры.
     
  • АО «Евросиб СПб–транспортные системы» – оператор контейнерных сервисов с широкой сетью маршрутов на внутрироссийских и международных направлениях. Имеет успешный опыт управления парком фитинговых платформ, а также организации ускоренных контейнерных поездов, в основе которых точное расписание, оптимальные сроки доставки груза и экономическая целесообразность.

  • ИНВИТРО
    ИНВИТРО – крупнейшая частная медицинская компания в России, специализирующаяся на лабораторной диагностике и оказании других медицинских услуг.
     
    ИНВИТРО располагает 9 самыми современными лабораторными комплексами и крупнейшей в Восточной Европе сетью более чем из 900 медицинских офисов. Страны присутствия — Россия, Украина, Казахстан, Беларусь.
     
  • Решения
    • Дистрибуция
    • Розничная торговля
    • Производство
    • Операторы связи
    • Страхование
    • Банки
    • Лизинг
    • Логистика
    • Нефтегазовый сектор
    • Медицина
    • Сеть ресторанов
    • E-Commerce
    • Энергетика
    • Фармацевтика
  • Услуги
    • Переход на отечественные BI и DWH
    • Консалтинг
    • Пилотный проект
    • Обучение и сертификация
    • Бесплатное обучение
    • Техническая поддержка
    • Технические задания
    • Сбор требований для проекта внедрения BI-системы
    • CI/CD для DWH
    • Аудит BI приложений
    • Выделенная команда
    • Настойка и поддержка баз данных
    • Разработка BI Стратегии
    • Styleguide для BI-системы
    • Как выбрать BI-систему
  • Платформы
    • FineBI
    • FineReport
    • FineDataLink
    • Коннекторы данных из 1С в BI
    • Airflow + NiFi
    • Visiology
    • Luxms BI
    • Modus BI
    • PIX BI
    • Arenadata
    • ClickHouse
    • Greenplum
    • Postgres Professional
    • Open-source BI: Superset/Metabase
    • Loginom
    • Yandex.DataLens
    • AI / Исскуственный интеллект
    • Optimacros
    • Шины данных
  • Курсы
    • Учебный курс Информационная грамотность
    • Учебный курс для бизнес-аналитиков
    • Учебный курс для системных аналитиков
    • Учебный курс по Data Governance
    • Учебный курс Как стать CDO
    • Учебный курс Современная архитектура хранилища данных
    • Учебный курс по Fine BI
    • Учебный курс по FineReport
    • Учебный курс по DWH
    • Учебный курс по Data Science (ML, AI)
    • Учебный курс по PostgreSQL
    • Учебный курс по Apache Airflow и NiFi
    • Учебный курс по Open-source BI
    • Учебный курс по ClickHouse
    • Учебный курс по DataLens
    • Учебный курс по Loginom
    • Учебный курс по Modus BI и ETL
    • Учебный курс по Visiology
    • Учебный курс по dbt
  • Функциональные решения
    • Создание Data Lake
    • Цифровая трансформация
    • Управление по KPI
    • Финансы
    • Продажи
    • Склад
    • HR
    • Маркетинг
    • Внутренний аудит
    • Категорийный менеджмент
    • S&OP и прогнозная аналитика
    • Геоаналитика
    • Цепочки поставок (SCM)
    • AutoML
    • Process Mining
    • Сквозная аналитика
  • Компания
    • О нас
    • Руководство
    • Новости
    • Клиенты
    • Скачать
    • Контакты
    • Политика конфиденциальности
RutubeVkontakteLinkedInYouTube
ООО "Би Ай Консалт",
ИНН: 7811437757,
ОГРН: 1097847154184
199178, Россия,
Санкт-Петербург,
6-ая линия В.О., Д. 63, 4 этаж
Тел: +7 (812) 334-08-01
Тел: +7 (499) 608-13-06
E-mail: info@biconsult.ru

 

 

 

 

 

×

Пользуясь сайтом, вы соглашаетесь с использованием cookies и политикой конфиденциальности.