Size: a a a

ClickHouse не тормозит

2021 March 15

AS

Alexey Sokolov in ClickHouse не тормозит
Tagir Gumerov
В моем сообщение ключевым моментом было то, что именно вы хотите замерить. Вы не ответили и ушли тестить:)
Таблица null?
Типичная ситуация, да?))

Мне нужно замерить в первую очередь рост потребления памяти, во вторую - рост нагрузки на проц. Сейчас всё это вычитывается внешней приложухой, а я хочу передать эту почётную обязанность самому КХ.

Нет, тестил на обычной MT таблице (связка KafkaEngine -> MV -> MT), чтобы всё как по-настоящему.
источник

TG

Tagir Gumerov in ClickHouse не тормозит
Alexey Sokolov
Типичная ситуация, да?))

Мне нужно замерить в первую очередь рост потребления памяти, во вторую - рост нагрузки на проц. Сейчас всё это вычитывается внешней приложухой, а я хочу передать эту почётную обязанность самому КХ.

Нет, тестил на обычной MT таблице (связка KafkaEngine -> MV -> MT), чтобы всё как по-настоящему.
Хм, я не ожидал, что 15k rps будет "бесплатным", пусть даже на одной таблице.
В чате писали, что при использовании KafkaEngine узким местом бывает диск: много топиков льют данные в одну или разные таблицы, возникает много партов, они не успевают мержиться. Но кх не про создание на одной ноде 100 kafka читателей.
Собственно вы выяснили, что память и cpu не сильно деградируют:)
источник

SD

Stanislav Didenko in ClickHouse не тормозит
Добрый день! Подскажите пожалуйста, есть таблица с движком AggregatingMergeTree:
———
CREATE TABLE IF NOT EXISTS prices.hashes
(
   hash     String,
   found_at AggregateFunction(max, DateTime)
)
ENGINE = AggregatingMergeTree()
ORDER BY (hash);

————

Попытка сделать прямой insert
INSERT INTO prices.hashes (hash, found_at) VALUES ('some_hash', toDateTime('2021-03-15 12:00:03’))

завершается ошибкой: Cannot convert UInt64 to AggregateFunction(max, DateTime)

Есть ли какой-то правильный способ писать данные в AggregatingMergeTree, если не через MaterializedView и не через INSERT INTO … SELECT … ?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Stanislav Didenko
Добрый день! Подскажите пожалуйста, есть таблица с движком AggregatingMergeTree:
———
CREATE TABLE IF NOT EXISTS prices.hashes
(
   hash     String,
   found_at AggregateFunction(max, DateTime)
)
ENGINE = AggregatingMergeTree()
ORDER BY (hash);

————

Попытка сделать прямой insert
INSERT INTO prices.hashes (hash, found_at) VALUES ('some_hash', toDateTime('2021-03-15 12:00:03’))

завершается ошибкой: Cannot convert UInt64 to AggregateFunction(max, DateTime)

Есть ли какой-то правильный способ писать данные в AggregatingMergeTree, если не через MaterializedView и не через INSERT INTO … SELECT … ?
источник

ВА

Василий Аверьянов... in ClickHouse не тормозит
Dmitry Titov
в новых версиях есть OPTIMIZE DEDUPLICATE BY columns.

какой ORDER BY таблицы
Спасибо за наводку - попробую! А проблема возпроизводится даже в таблице (merge engine) с 1 колонкой (id UInt8) и order by id  соотвественно.
источник

DT

Dmitry Titov in ClickHouse не тормозит
Василий Аверьянов
Спасибо за наводку - попробую! А проблема возпроизводится даже в таблице (merge engine) с 1 колонкой (id UInt8) и order by id  соотвественно.
Вообще эти подзапросы очень сомнительная вещь.
Мы обычно рекомендуем делать таблицу с id на нее вешать словарь и пользоватся dictHas
источник

SD

Stanislav Didenko in ClickHouse не тормозит
спасибо! понял, помогло)
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Витя Сергеев
добрый день, не смог найти похожего на свое поэтому пришел с вопросом:
Например есть таблица с историческими данными, на неё надо повесить материализованную вьюху, чтобы та подцепила данные из таблицы

Сама таблица весит 1.78 GiB в настройках стоит оганичение total 6ГБ, на запрос 3ГБ ограничение на группировку и сортировку (max_bytes_before_external...) по 300мб
В общем проблема в том, что запросы создания вьюхи с populate (или пустой с последущим insert) падают то на total памяти, то на query

Вариант увеличить ram отодвинул, т.к. количество данных будет расти и вопрос в другом.
Как создать вьюху на таблице которая превышает объем RAM?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Василий Аверьянов
Спасибо за наводку - попробую! А проблема возпроизводится даже в таблице (merge engine) с 1 колонкой (id UInt8) и order by id  соотвественно.
вообще-то Engine=Merge и Engine=MergeTree это вообще два разных, совершенно про разное движка.
И такой delete не поддерживается
источник

ВА

Василий Аверьянов... in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
вообще-то Engine=Merge и Engine=MergeTree это вообще два разных, совершенно про разное движка.
И такой delete не поддерживается
да, я имел ввиду mergetree
источник

DL

Daniil Lapko in ClickHouse не тормозит
А при left join только правая таблица загружается в память?
источник

D

Danil in ClickHouse не тормозит
пытаюсь скопировать данные между таблицами на разных хостах
разница в таблицах в одной колонке:
в оригинальной значение типа строки
во второй сделал Enum8

в запросе формирую новую колонку через multiIf()

в пределах одного хоста это работает через
INSERT INTO NewTable SELECT c1, c2, (multiIf(starsWith(c3, 'file'), 0, starsWith(c3, 'directory'), 1, starsWith(c3, 'symbolic'), 2, 3) as c3 FROM OldTable


когда пытаюсь сделать через пайп из двух консольных клиентов выдаёт ошибку что ожидается Enum8 а получен Uint8

Пробовал в пайпе конвертировать в строковые имена для Enum - тогда ругается на ошибку конdертации STring в Enum8

Как можно это победить?
источник

DN

Dmitriy Novikov in ClickHouse не тормозит
Daniil Lapko
А при left join только правая таблица загружается в память?
hash join, правая в память по левой бегаем
источник

DL

Daniil Lapko in ClickHouse не тормозит
Dmitriy Novikov
hash join, правая в память по левой бегаем
Странно, есть таблица 15гб при join селекта по ней выдает ошибку что требуется памяти больше 56гб.
источник

DN

Dmitriy Novikov in ClickHouse не тормозит
Daniil Lapko
Странно, есть таблица 15гб при join селекта по ней выдает ошибку что требуется памяти больше 56гб.
15 гб в каком виде?
источник

AK

Alex Krash in ClickHouse не тормозит
Daniil Lapko
Странно, есть таблица 15гб при join селекта по ней выдает ошибку что требуется памяти больше 56гб.
в памяти находятся "расжатые" данные, на диски - "сжатые".
источник

DN

Dmitriy Novikov in ClickHouse не тормозит
Daniil Lapko
Странно, есть таблица 15гб при join селекта по ней выдает ошибку что требуется памяти больше 56гб.
Может жрет место при построении хэш таблицы, я читал в чатике писали что у клика хэш таблицы занимают много места.
источник

DL

Daniil Lapko in ClickHouse не тормозит
Да сжатые, есть таблица А условно 200гб по ней идет селект и к нему нужно заджоинить столбец из таблицы B 15гб. В теории выглядело просто учитывая, что обе таблицы имеют одинаковые ключи сортировки, но на практике не хватает памяти и очень долго по времени. Получается что джоинить вообще всегда плохая идея и нужно все нужные данные в одной таблице иметь?
источник

DN

Dmitriy Novikov in ClickHouse не тормозит
Daniil Lapko
Да сжатые, есть таблица А условно 200гб по ней идет селект и к нему нужно заджоинить столбец из таблицы B 15гб. В теории выглядело просто учитывая, что обе таблицы имеют одинаковые ключи сортировки, но на практике не хватает памяти и очень долго по времени. Получается что джоинить вообще всегда плохая идея и нужно все нужные данные в одной таблице иметь?
Джойн это концептуально плохая идея при построении dwh.  Но Я бы не был так резок в таких выводах на самом деле. Иногда нужно разносить данные, делать сильно разреженную таблицу это антипаттерн, читали статью badoo? и клике
источник

DL

Daniil Lapko in ClickHouse не тормозит
Не читал, можно ссылку?)
источник