Size: a a a

ClickHouse не тормозит

2020 September 13

АР

Артем Разуваев... in ClickHouse не тормозит
Товарищи а это норм что в клик очень долго данные заливаются?
client.execute("insert into storage.newData(field1,field2) values (\'{}\',\'{}\')".format(key, value))
таблица на движке ReplacingMergeTree()
операция insert занимает 16-18мс

Сейчас гружу миллион записей через питон, тупо в цикле по одному исерту передаю записи.
Наверно я что то делаю не так )
Может надо как то целиком ему файлы скармливать?
источник

Е

Екатерина in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
ожидаемо диски задыхаются, очередь мелких дисковых операций (создание тысяч файлов для 50 партов), 100% утилизации, дичайший await

компактные парты конечно помогут (NVME диски тоже), но в любом случае 50 MV это ужасный дизайн и неправильно
это временное извращение, которое работает и дает нам время построить систему, у нас тут свои трудности, и вот пришлось один немелкий проект перетащить, при чем с починкой парсинга из основной таблицы, ну, если, лучше не сделать, тогда, ок, смиряемся с этим
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Артем Разуваев
Товарищи а это норм что в клик очень долго данные заливаются?
client.execute("insert into storage.newData(field1,field2) values (\'{}\',\'{}\')".format(key, value))
таблица на движке ReplacingMergeTree()
операция insert занимает 16-18мс

Сейчас гружу миллион записей через питон, тупо в цикле по одному исерту передаю записи.
Наверно я что то делаю не так )
Может надо как то целиком ему файлы скармливать?
целиком, по сто тысяч записей в одном инсерт
источник

АР

Артем Разуваев... in ClickHouse не тормозит
О!
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Екатерина
это временное извращение, которое работает и дает нам время построить систему, у нас тут свои трудности, и вот пришлось один немелкий проект перетащить, при чем с починкой парсинга из основной таблицы, ну, если, лучше не сделать, тогда, ок, смиряемся с этим
возьмите NVME и компактные парты
источник

АР

Артем Разуваев... in ClickHouse не тормозит
А то ноут щас расплавится )))
источник

Е

Екатерина in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
возьмите NVME и компактные парты
другие диски мы уже взять не сможем, а по поводу компактных партов - можно по-подробнее?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Екатерина
другие диски мы уже взять не сможем, а по поводу компактных партов - можно по-подробнее?
источник

D

Dj in ClickHouse не тормозит
Екатерина
другие диски мы уже взять не сможем, а по поводу компактных партов - можно по-подробнее?
Формат хранения определяется настройками движка min_bytes_for_wide_part и min_rows_for_wide_part. Если число байт или строк в куске данных меньше значения, указанного в соответствующей настройке, тогда этот кусок данных хранится в формате Compact. В противном случае кусок данных хранится в формате Wide. Если ни одна из настроек не задана, куски данных хранятся в формате Wide.
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
таблицу пересоздавать не нужно, можно добавить min_bytes_for_wide_part альтером потаблично, либо на весь сервер сразу
источник

Е

Екатерина in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
таблицу пересоздавать не нужно, можно добавить min_bytes_for_wide_part альтером потаблично, либо на весь сервер сразу
это как-то влияет на дальнейшую работу - формат Compact?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Екатерина
это как-то влияет на дальнейшую работу - формат Compact?
как-то влияет, но вам с util = 100% хуже уже не будет
источник

Е

Екатерина in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
как-то влияет, но вам с util = 100% хуже уже не будет
а запросы потом по этим данным будут медленнее?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Екатерина
а запросы потом по этим данным будут медленнее?
первый же мерж их пережмет в широкий формат

запросы будут медленее к этим еще несмерженным партам, но у вас util 100%, если вы его уменьшите за счет компактных партов, то ваши селекты ускорятся
источник

Е

Екатерина in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
первый же мерж их пережмет в широкий формат

запросы будут медленее к этим еще несмерженным партам, но у вас util 100%, если вы его уменьшите за счет компактных партов, то ваши селекты ускорятся
ага, хорошо, попробуем, спасибо!
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
но в любом случае 50 MV это не бигдата и не КХ
источник

Е

Екатерина in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
но в любом случае 50 MV это не бигдата и не КХ
мы знаем, нам очень стыдно, но пришлось так сделать, скоро все поменяем, у нас нетолько CH будет
источник

kp

krn p in ClickHouse не тормозит
всем привет.
дергаю из словаря строку, которая была массивом строк, пока не сменила гендер 😄
[1, 2, 3] --строка есичо
нужно внутри этой строки найти совпадения с массивом нормального гендера.
что -то вроде
hasAny(JSONExtractArrayRaw('[1,2,3]'), [1])
проблема в том, что этой функции в моей версии кликхауса (19.7.3) нету.
вопрос: как это можно провернуть?
источник

D

Dj in ClickHouse не тормозит
krn p
всем привет.
дергаю из словаря строку, которая была массивом строк, пока не сменила гендер 😄
[1, 2, 3] --строка есичо
нужно внутри этой строки найти совпадения с массивом нормального гендера.
что -то вроде
hasAny(JSONExtractArrayRaw('[1,2,3]'), [1])
проблема в том, что этой функции в моей версии кликхауса (19.7.3) нету.
вопрос: как это можно провернуть?
условно если тип был int32, то можно так
select arrayMap(x->toInt32(x),splitByChar(',',replaceOne(replaceOne('[1,2,3]','[',''),']','')));


но это ненадёжно конечно
источник

М

Максим in ClickHouse не тормозит
SELECT arrayCompact(x -> (x.1), [('a', 1), ('a', 2), ('c', 3), ('a', 1)]) AS v

┌─v─────────────┐
│ ['a','c','a'] │
└───────────────┘

Всем привет.
Может кто подскажет, есть ли вариант сравнивать в arrayCompact по x.1, но выводить весь tuple ?
источник