Size: a a a

ClickHouse не тормозит

2020 September 29

АС

Александр Стегниенко... in ClickHouse не тормозит
Все привет!

Подскажите, как можно перегонять большие объёмы данных внутри ClickHouse между таблицами.

Есть таблица с одним видом партиционирования, уже заполненная данными, хочу попробовать иное партиционирование, посмотреть перфоманс.

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

Code: 241, e.displayText() = DB::Exception: Memory limit (for query) exceeded: would use 9.32 GiB (attempt to allocate chunk of 4194704 bytes), maximum: 9.31 GiB: While executing MergeSortingTransform (version 20.8.2.3 (official build))


Есть ли какие-то best-practices для таких нужд?
источник

S

Slach in ClickHouse не тормозит
Александр Стегниенко
Все привет!

Подскажите, как можно перегонять большие объёмы данных внутри ClickHouse между таблицами.

Есть таблица с одним видом партиционирования, уже заполненная данными, хочу попробовать иное партиционирование, посмотреть перфоманс.

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

Code: 241, e.displayText() = DB::Exception: Memory limit (for query) exceeded: would use 9.32 GiB (attempt to allocate chunk of 4194704 bytes), maximum: 9.31 GiB: While executing MergeSortingTransform (version 20.8.2.3 (official build))


Есть ли какие-то best-practices для таких нужд?
ничего умнее
INSERT INTO new_table () SELECT ... FROM old_table нет

ошибка означает что ваш новый вид "партицирования"
хочет много памяти для того чтобы пересортировать ваш новый PRIMARY KEY
и упирается в max_memory_usage или что-то подобное

https://clickhouse.tech/docs/en/sql-reference/statements/select/#implementation-details

попробуйте уменьшить значение max_bytes_before_external_sort
SET max_bytes_before_external_sort=...; INSERT ... SELECT
или
INSERT ... SELECT ... SETTINGS max_bytes_before_external_sort=...
или через query string передавайте если у вас HTTP протокол
источник

АС

Александр Стегниенко... in ClickHouse не тормозит
Slach
ничего умнее
INSERT INTO new_table () SELECT ... FROM old_table нет

ошибка означает что ваш новый вид "партицирования"
хочет много памяти для того чтобы пересортировать ваш новый PRIMARY KEY
и упирается в max_memory_usage или что-то подобное

https://clickhouse.tech/docs/en/sql-reference/statements/select/#implementation-details

попробуйте уменьшить значение max_bytes_before_external_sort
SET max_bytes_before_external_sort=...; INSERT ... SELECT
или
INSERT ... SELECT ... SETTINGS max_bytes_before_external_sort=...
или через query string передавайте если у вас HTTP протокол
Спасибо! Попробую
источник

A

Alex in ClickHouse не тормозит
На таблицах похожего размера (200 - 300 млн строк) и схожей задачи (INSERT ... SELECT ..) нам пришлось увеличить Memory limit (for query) до 128G.
источник

WK

Wolf Kreuzerkrieg in ClickHouse не тормозит
коллеги, такой вопрос, верно ли утверждение что в реплицируемой таблице, после того как парты реплицированны, и эти же парты смерджены локально, новый полученый парт никак уже в репликации не участвует?
источник

S

Slach in ClickHouse не тормозит
Alex
На таблицах похожего размера (200 - 300 млн строк) и схожей задачи (INSERT ... SELECT ..) нам пришлось увеличить Memory limit (for query) до 128G.
это если память есть
если памяти нет, то можно пытаться играться с производительностью иногда даже оно без сильного ущерба для производительности проходит
источник

DO

Dew Oughter in ClickHouse не тормозит
Всем привет!
Подскажите пожалуйста как сделать следующее:
Имеется массив строк, с повторяющимися элементами например такой [a, b, c, d, a, b, a, b, c]
Нужно разбить этот массив на подмассивы таким образом {[a, b, c, d], [a, b], [a, b, c]} то есть разделить так, чтобы каждый подмассив начинался со строки а.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dew Oughter
Всем привет!
Подскажите пожалуйста как сделать следующее:
Имеется массив строк, с повторяющимися элементами например такой [a, b, c, d, a, b, a, b, c]
Нужно разбить этот массив на подмассивы таким образом {[a, b, c, d], [a, b], [a, b, c]} то есть разделить так, чтобы каждый подмассив начинался со строки а.
arraySplit((x) -> x=a,arr)
источник

DO

Dew Oughter in ClickHouse не тормозит
Dmitry Titov
arraySplit((x) -> x=a,arr)
Спасибо
источник

KM

Konstantin Malanchev in ClickHouse не тормозит
Коллеги, подскажите, гарантирует ли CH, что в GROUP BY запросе с несколькими groupArray(x), groupArray(y) вставки в массивы x, y будут происходить в одном порядке?
источник

PS

Philipp Shayzhanov in ClickHouse не тормозит
Всем привет. Не знает, как сделать, чтоб material_view досчитал все? Просто некоторые записи не появляются, хотя должны были.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Konstantin Malanchev
Коллеги, подскажите, гарантирует ли CH, что в GROUP BY запросе с несколькими groupArray(x), groupArray(y) вставки в массивы x, y будут происходить в одном порядке?
я бы сказал да,
Но можешь сделать еще вот так groupArray((x,y)) as arr, arr.1, arr.2
источник

DT

Dmitry Titov in ClickHouse не тормозит
тогда будет гарантированно
источник

DT

Dmitry Titov in ClickHouse не тормозит
Philipp Shayzhanov
Всем привет. Не знает, как сделать, чтоб material_view досчитал все? Просто некоторые записи не появляются, хотя должны были.
MAT VIEW в кх это INSERT триггер, так что должно сразу появлятся
источник

DT

Dmitry Titov in ClickHouse не тормозит
ищите проблему
источник

KM

Konstantin Malanchev in ClickHouse не тормозит
Dmitry Titov
я бы сказал да,
Но можешь сделать еще вот так groupArray((x,y)) as arr, arr.1, arr.2
Отлично, спасибо большое!
источник

PS

Philipp Shayzhanov in ClickHouse не тормозит
Dmitry Titov
MAT VIEW в кх это INSERT триггер, так что должно сразу появлятся
SETTINGS max_execution_time = 200
источник

PS

Philipp Shayzhanov in ClickHouse не тормозит
Dmitry Titov
MAT VIEW в кх это INSERT триггер, так что должно сразу появлятся
Обычно ставят такую настройку?
источник

PS

Philipp Shayzhanov in ClickHouse не тормозит
Возможно из-за нее
источник

PS

Philipp Shayzhanov in ClickHouse не тормозит
А как безболезненно в фоне тогда выполнить POPULATE?
источник