Size: a a a

ClickHouse не тормозит

2020 July 15

D

Dj in ClickHouse не тормозит
Vokeven
Подскажите, пожалуйста, куда копать.
CH версии 19.15.3.6. (16 Гб RAM)
Есть 2 таблицы, движок MergeTree.
В каждой по 150 колонок, в основном String. В левой 5.5 млн записей. В правой 120 000.
Пытаюсь вставить в левую таблицу записи из правой, которых нет в левой таблицы.
Джоин идет по хеш-ключу - тип поля FixedString(20)
При попытке выполнения запроса ClickHouse выедает 9 Гб и запрос падает (стоит ограничение на запрос)
При этом ClickHouse не освобождает память на сервере.
При повторной попытке выполнить запрос он выедает оставшуюся память, сервер падает и перезагружается.
Вот сам селект.
INSERT INTO db1.order_hash
SELECT r.*
FROM db1.order_hash l
RIGHT JOIN
   (SELECT *
   FROM db2.order_source_hash) r
   ON l.hashKey = r.hashKey            
WHERE 1=1
   AND empty(l.hashKey)
у вас собственно right join, на гигантскую таблицу справа... оно не будет работать
источник

D

Dj in ClickHouse не тормозит
Andrey
Ребят, а как можно ограничить количество потоков на скачивание партов с реплик?
куда нибудь сюда наверно:
replicated_max_parallel_fetches
replicated_max_parallel_fetches_for_table
replicated_max_parallel_fetches_for_host
replicated_max_parallel_sends
replicated_max_parallel_sends_for_table
источник

D

Dj in ClickHouse не тормозит
Vokeven
Подскажите, пожалуйста, куда копать.
CH версии 19.15.3.6. (16 Гб RAM)
Есть 2 таблицы, движок MergeTree.
В каждой по 150 колонок, в основном String. В левой 5.5 млн записей. В правой 120 000.
Пытаюсь вставить в левую таблицу записи из правой, которых нет в левой таблицы.
Джоин идет по хеш-ключу - тип поля FixedString(20)
При попытке выполнения запроса ClickHouse выедает 9 Гб и запрос падает (стоит ограничение на запрос)
При этом ClickHouse не освобождает память на сервере.
При повторной попытке выполнить запрос он выедает оставшуюся память, сервер падает и перезагружается.
Вот сам селект.
INSERT INTO db1.order_hash
SELECT r.*
FROM db1.order_hash l
RIGHT JOIN
   (SELECT *
   FROM db2.order_source_hash) r
   ON l.hashKey = r.hashKey            
WHERE 1=1
   AND empty(l.hashKey)
SELECT *
   FROM db2.order_source_hash t
where hashKey NOT IN (select distinct hashKey from db1.order_hash )
сколько памяти кушает в трейсе?

если не влезает, вам надо бить hashKey на батчи/партиции и делать итеративно
источник

S

Slach in ClickHouse не тормозит
Elena
Коллеги, добрый день! Я BI-специалист и мои отвечающие за  DWH коллеги уверяют меня, что в ClickHouse нет настройки последовательного исполнения запросов. Что он может только одновременно, это правда?
=)) а какая СУБД может "последовательно"?

можете сказать?
источник

S

Slach in ClickHouse не тормозит
Elena
А так во всех базах? Раньше работала с Postgre + MySQL - с такой проблемой не сталкивалась
с какой проблемой? ;)
MySQL и PostgreSQL тоже выполняют все запросы ПАРАЛЕЛЬНО =)
источник

D

Denisio in ClickHouse не тормозит
Slach
=)) а какая СУБД может "последовательно"?

можете сказать?
у mssql есть query governor
источник

A

Andrey in ClickHouse не тормозит
Slach
с какой проблемой? ;)
MySQL и PostgreSQL тоже выполняют все запросы ПАРАЛЕЛЬНО =)
sqlite 😄
источник

D

Denisio in ClickHouse не тормозит
коричневый код! коричневый код!
источник

V

Vokeven in ClickHouse не тормозит
Dj
это размер на диске... попробуйте ваш запрос так - сколько памяти съест?

SELECT r.hashKey
FROM db1.order_hash l
LEFT JOIN
   (SELECT hashKey
   FROM db2.order_source_hash) r
   ON l.hashKey = r.hashKey            
WHERE 1=1
   AND empty(l.hashKey)
Запрос выполняется моментально.
источник

S

Slach in ClickHouse не тормозит
Andrey
sqlite 😄
там только запись последовательная, потому что на запись database lock стоит,  чтение паралельное при этом
источник

D

Dj in ClickHouse не тормозит
Vokeven
Запрос выполняется моментально.
ok, я его писал исходя из того что таблица справа маленькая, но пока писал у вас все поменялось )))

пробуйте этот запрос в родном клиенте с трейсом
https://t.me/clickhouse_ru/171938
источник

V

Vokeven in ClickHouse не тормозит
Dj
у вас собственно right join, на гигантскую таблицу справа... оно не будет работать
изначально с ошибкой LEFT написал. Правильно RIGHT. Правая таблица маленькая - 120 тыс записей. Она должна спокойно в памяти помещаться
источник

D

Dj in ClickHouse не тормозит
Slach
=)) а какая СУБД может "последовательно"?

можете сказать?
я так думаю БИ надо было последовательно в смысле "хранимки"
источник

S

Slach in ClickHouse не тормозит
Denisio
у mssql есть query governor
и как он ограничивает "параллельное исполнение SQL запросов"?
насколько я понимаю там максимум можно ограничить длительность одного запроса
ну может кол-во коннектов ограничить
источник

S

Slach in ClickHouse не тормозит
Dj
я так думаю БИ надо было последовательно в смысле "хранимки"
сильно сомневаюсь
источник

D

Denisio in ClickHouse не тормозит
да, количество помоему там тоже можно
источник

AK

Alex Konstantinov in ClickHouse не тормозит
Dj
я так думаю БИ надо было последовательно в смысле "хранимки"
Обычно BI вообще ничего не знают о хранимках.
источник

S

Slach in ClickHouse не тормозит
Elena
А так во всех базах? Раньше работала с Postgre + MySQL - с такой проблемой не сталкивалась
вы какую проблему хотите решить?
что конкретно у вас не получается?
и какая у вас BI система?
Табло? Qlik? PowerBI ?
источник

D

Dj in ClickHouse не тормозит
Slach
и как он ограничивает "параллельное исполнение SQL запросов"?
насколько я понимаю там максимум можно ограничить длительность одного запроса
ну может кол-во коннектов ограничить
в оракл точно есть ограничитель, resource manager...
источник

S

Slach in ClickHouse не тормозит
Dj
в оракл точно есть ограничитель, resource manager...
ограничитель чего? кол-ва одновременно исполняющихся запросов?
источник