184 похожих чатов

Добрый день. кто-нибудь может подсказать где почитать более детально про

INDEX в кх? документация весьма скудно описывает типы индексов, как выбирать их GRANULARITY тоже не вполне понятно. спасибо

19 ответов

8 просмотров

в КХ есть только кластерный индекс, и скип индексы (с очень ограниченным пространством применения). грануларити обычно лучше не трогать

enclaved- Автор вопроса

GRANULARITY выбираешь исходя из того, насколько часто индексом пользоваться надо. Если редко, то можно сэкономить на памяти для индекса.

способ только один, просто подбором, ставите 10, проверяете запросы, ставите 5 , проверяете

enclaved- Автор вопроса
Denny [Altinity]
способ только один, просто подбором, ставите 10, п...

А есть какой-нибудь конкретный профиль использования этих пропускающих индексов? У меня задача: ускорить обычные агрегирующие запросы к таблице с сырыми данными (лог событий), когда WHERE в запросе не имеет полей из ПК таблицы

enclaved
А есть какой-нибудь конкретный профиль использован...

могу с уверенностью 88% сказать что skip индексы вам не помогут

enclaved- Автор вопроса
Denny [Altinity]
могу с уверенностью 88% сказать что skip индексы в...

Тогда еще один вопрос: ПК таблицы, записанный как ORDER BY (ts, a, b), будет участвовать в запросах, где есть WHERE ts = x AND b = y (то есть нет условия по полю a)?

enclaved
Тогда еще один вопрос: ПК таблицы, записанный как ...

Будет участвовать, да. Но если a часто меняется, то толку мало будет

enclaved
Тогда еще один вопрос: ПК таблицы, записанный как ...

зависит от кардинальности ts, так ts это похоже на timestamp то нет. короче вопрос ЧТО ТАКОЕ TS ?

enclaved- Автор вопроса
Denny [Altinity]
зависит от кардинальности ts, так ts это похоже на...

Верно, именно timestamp события. Таблица - лог запросов к рекламному трекеру. Задача - сообразить ПК/индексы так, чтобы максимально быстро выполнять агрегирующие запросы пользователей, в которых могут быть любые комбинации WHERE и GROUP BY

enclaved
Верно, именно timestamp события. Таблица - лог зап...

начните с ORDER BY (a, b, ts) если не подойдет то проверьте ORDER BY (toStartOfHour(ts), a, b) ORDER BY (toStartOfDay(ts), a, b)

enclaved
Верно, именно timestamp события. Таблица - лог зап...

1. А a и b у вас что? Тикер/номер компании? 2. Паттерн обычно какой: запрашивают по своей компании или сразу по многим?

enclaved- Автор вопроса
Loyd
1. А a и b у вас что? Тикер/номер компании? 2. Пат...

Запрашивают по своему id юзера разные кампании

enclaved- Автор вопроса
Loyd
1. А a и b у вас что? Тикер/номер компании? 2. Пат...

2. Даже так: обычно id юзера в WHERE, а id кампании часто в GROUP BY

enclaved
2. Даже так: обычно id юзера в WHERE, а id кампани...

Тогда можно что-то вроде OK = (user_id, timestamp) Масштабировать на кластер по user_id % X или консистентное хеширование

Loyd
Тогда можно что-то вроде OK = (user_id, timestamp)...

Ещё можно data skipping index bloom_filter завести на id кампании, если надо искать на большие промежутки, но с ограничением по кампаниям

enclaved
А есть какой-нибудь конкретный профиль использован...

ну IMHO тут очень сильно зависит от того как данные в ваших столбцах по которым вы пытаетесь data skip index размыты по разным system.parts data skip означает что при сканировании парт сначала проверяется что искомые значения ОТСУТСТВУЮТ в конкретном парт если есть вероятность что они есть. то идет обычное сканирование парта... то есть data skip index помогут если условия фильтрации по запросам данные локализованы именно в рамках 1-нескольких партов а если у вас user=1 на половине таблицы, то не помогут

enclaved- Автор вопроса
Loyd
Тогда можно что-то вроде OK = (user_id, timestamp)...

Вообще без id кампаний в OK? Бывают сравнительно часто запросы данных по конкретным кампаниям, то есть WHERE id юзера AND id кампании

enclaved
Вообще без id кампаний в OK? Бывают сравнительно ч...

Тут пробовать надо. Либо с bloom_filter индексом дополнительно, что такие запросы может ускорить, либо уже полноценная отдельная MV с сортировкой по кампании. Промежуточные варианты с toStartOfHour, как @den_crane выше предлагал это промежуточные по скорости варианты для обоих запросов.

Похожие вопросы

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта