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

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

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

19 ответов

12 просмотров

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

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 выше предлагал это промежуточные по скорости варианты для обоих запросов.

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта