Size: a a a

ClickHouse не тормозит

2019 December 11

KM

Konstantin Malanchev in ClickHouse не тормозит
За ровно n?
источник

MK

Matwey Kornilov in ClickHouse не тормозит
Вадим
так а за какое время максимальный эллемент в не отсортированном списке можно найти еще?
За O(N) ?
источник

В

Вадим in ClickHouse не тормозит
как?
источник

KM

Konstantin Malanchev in ClickHouse не тормозит
А не за O(n log(n))
источник

MK

Matwey Kornilov in ClickHouse не тормозит
Вадим
как?
Просмотрев все элементы подряд?
источник

Н

Николай in ClickHouse не тормозит
Вадим
как?
Идёшь в цикле и сравниваешь с текущим максимумом
источник

В

Вадим in ClickHouse не тормозит
эх, да
источник

В

Вадим in ClickHouse не тормозит
чет я затупил
источник

СГ

Сергей Глубоков... in ClickHouse не тормозит
Ребята, всем привет!

Вчера возник вопрос, хочется понять истину: имеем в таблице поле, означающее тип события. Типов ограниченное число, но постоянно появляются новые. Стоит вопрос - в каком виде хранить в CH. Вариантов 3: int'ом, string'ом, enum'ом.
Enum отбрасываем, т.к. альтеры делать вовремя не имеем возможности. String у int'а выигрывает удобством дальнейших запросов к статистике (про механизм словарей знаем, но кажется, что они тут некоторым оверхедом являются)
Вопросов 2:
1. при дефолтных настройках, будет ли у string'a сильный проигрыш по объему на диске? Схлопываются ли в рамках партиций одинаковые значения в колонках?
2. планируется много запросов, где данное поле будет фигурировать в where. Есть ли выигрыш по скорости у int'a при фильтрации?

Заранее спасибо за ответы
источник

S

Shazo in ClickHouse не тормозит
Сергей Глубоков
Ребята, всем привет!

Вчера возник вопрос, хочется понять истину: имеем в таблице поле, означающее тип события. Типов ограниченное число, но постоянно появляются новые. Стоит вопрос - в каком виде хранить в CH. Вариантов 3: int'ом, string'ом, enum'ом.
Enum отбрасываем, т.к. альтеры делать вовремя не имеем возможности. String у int'а выигрывает удобством дальнейших запросов к статистике (про механизм словарей знаем, но кажется, что они тут некоторым оверхедом являются)
Вопросов 2:
1. при дефолтных настройках, будет ли у string'a сильный проигрыш по объему на диске? Схлопываются ли в рамках партиций одинаковые значения в колонках?
2. планируется много запросов, где данное поле будет фигурировать в where. Есть ли выигрыш по скорости у int'a при фильтрации?

Заранее спасибо за ответы
LowCardinality(String)?
источник

СГ

Сергей Глубоков... in ClickHouse не тормозит
Shazo
LowCardinality(String)?
Это да, просто интересно, как это работает без LowCardinality (надо ли переделывать и переписывать старые таблицы)
источник

S

Shazo in ClickHouse не тормозит
Сергей Глубоков
Это да, просто интересно, как это работает без LowCardinality (надо ли переделывать и переписывать старые таблицы)
это покрывает все ваши кейсы. Если интересует именно стоит ли переходить со старого варианта, то думаю да, но проще взять данные за какой-то период да проверить.
источник

SK

Sergey Kuzmin in ClickHouse не тормозит
https://github.com/ClickHouse/ClickHouse/issues/936
а эту ишуёвину зарешали?
хочу добавлять столбец в табличку, реплицируемую двумя способами (через репликатед мерж три и дистрибутед таблички поверх)

предлагается добавить в мерж три столбец, а дистрибутед пересоздать
источник

S

Shazo in ClickHouse не тормозит
Sergey Kuzmin
https://github.com/ClickHouse/ClickHouse/issues/936
а эту ишуёвину зарешали?
хочу добавлять столбец в табличку, реплицируемую двумя способами (через репликатед мерж три и дистрибутед таблички поверх)

предлагается добавить в мерж три столбец, а дистрибутед пересоздать
лениво вчитываться, но уже давно используем ALTER  на distributed. Добавляете в исходнуую таблицу, потом в distributed
источник

SK

Sergey Kuzmin in ClickHouse не тормозит
Shazo
лениво вчитываться, но уже давно используем ALTER  на distributed. Добавляете в исходнуую таблицу, потом в distributed
Отлично, но он на меня кодом Латвии ругается
ServerException: Code: 371.
DB::Exception: There was an error on [<hostip>:9000]: An error occured before execution: Code: 371, e.displayText() = DB::Exception: Table 'my-tablename' is replicated, but shard #1 isn't replicated according to its cluster definition. Possibly <internal_replication>true</internal_replication> is forgotten in the cluster config.

А в документации так "<internal_replication>true</internal_replication><!-- Не обязательно. Записывать ли данные только на одну, любую из реплик. По умолчанию, false - записывать данные на все реплики. -->"
я во все реплики хочу данные писать
источник

S

Shazo in ClickHouse не тормозит
Вы делаете ALTER на distributed таблице с опцией ON CLuster? Если без ON CLuster работает?
источник

SK

Sergey Kuzmin in ClickHouse не тормозит
Shazo
Вы делаете ALTER на distributed таблице с опцией ON CLuster? Если без ON CLuster работает?
ага, on cluster, только у меня спотычина еще на базовой таблице происходит. Может, if not exists убрать
источник

S

Shazo in ClickHouse не тормозит
Sergey Kuzmin
ага, on cluster, только у меня спотычина еще на базовой таблице происходит. Может, if not exists убрать
а шард 1 сколько реплик?
источник

Н

Николай in ClickHouse не тормозит
Сергей Глубоков
Ребята, всем привет!

Вчера возник вопрос, хочется понять истину: имеем в таблице поле, означающее тип события. Типов ограниченное число, но постоянно появляются новые. Стоит вопрос - в каком виде хранить в CH. Вариантов 3: int'ом, string'ом, enum'ом.
Enum отбрасываем, т.к. альтеры делать вовремя не имеем возможности. String у int'а выигрывает удобством дальнейших запросов к статистике (про механизм словарей знаем, но кажется, что они тут некоторым оверхедом являются)
Вопросов 2:
1. при дефолтных настройках, будет ли у string'a сильный проигрыш по объему на диске? Схлопываются ли в рамках партиций одинаковые значения в колонках?
2. планируется много запросов, где данное поле будет фигурировать в where. Есть ли выигрыш по скорости у int'a при фильтрации?

Заранее спасибо за ответы
Таблица - значения телеметрий от устройств. Есть столбец с названием метрики. Сценарий такой же, как у вас - могут появляться новые метрики, но общее количество достаточно небольшое (сейчас 22). В тестовой таблице 400млн строк, распределение метрик неравномерное, есть метрики с 200млн записей, есть с 1млн.
1. Тип метрики String, столбец в сжатом виде - 17Мб, в распакованном - 3,8гб.
Если тип LowCardinality(String) - в сжатом виде 1.7Мб, в распакованном - 377мб.
2. SELECT COUNT() с фильтром по метрике:
String: Elapsed: 4.983 sec. Processed 394.41 million rows, 7.29 GB (79.15 million rows/s., 1.46 GB/s.)
LowCardinality: Elapsed: 1.609 sec. Processed 394.41 million rows, 395.26 MB (245.07 million rows/s., 245.60 MB/s.)
источник

SK

Sergey Kuzmin in ClickHouse не тормозит
Shazo
а шард 1 сколько реплик?
3 реплики, шард единственный
источник