Size: a a a

ClickHouse не тормозит

2021 March 26

SP

Sergey Platonov in ClickHouse не тормозит
SELECT t1.*,c[1] c1 ,c[2] c2, t2.*
FROM test t1
ARRAY JOIN array([1,1],[2,3]) as c
JOIN test as t2 ON t2.id = toInt32(c[2])
WHERE t1.id = c[1]
источник

KS

Konstantin Sevastian... in ClickHouse не тормозит
но где гарантия что у вас элементы будут на этих позициях всегда?
источник

SP

Sergey Platonov in ClickHouse не тормозит
забавно что WHERE t1.id = c[1] - ОК а ON t2.id = c[2] не ок Type mismatch of columns to JOIN и ошибка на попытку FROM test t1, test t2 ARRAY JOIN
источник

SP

Sergey Platonov in ClickHouse не тормозит
Konstantin Sevastianov
но где гарантия что у вас элементы будут на этих позициях всегда?
массив часть запроса, их там не будет только если кто-то отредактирует запрос
источник

KS

Konstantin Sevastian... in ClickHouse не тормозит
Sergey Platonov
массив часть запроса, их там не будет только если кто-то отредактирует запрос
ну раз речь пошла о хардкоде то почему не записать маппинг прям в запрос?
источник

KS

Konstantin Sevastian... in ClickHouse не тормозит
особенно если надо сделать всего 4 записи
источник

SP

Sergey Platonov in ClickHouse не тормозит
серией условий?
источник

SP

Sergey Platonov in ClickHouse не тормозит
потому что если уж делаешь ты хардкод, то вынеси константы в начало кода )))
источник

SP

Sergey Platonov in ClickHouse не тормозит
что не такWITH [[1, 1], [2, 3]] AS c
SELECT
   t1.*,
   c
[1] AS c1,
   c
[2] AS c2,
   t2.*
FROM test AS t1
ARRAY JOIN c
INNER JOIN test AS t2 ON t2.id = toInt32(c[2])
WHERE t1.id = (c[1]) ошибка DB::Exception: No alias for non-trivial value in ARRAY JOIN
источник

KS

Konstantin Sevastian... in ClickHouse не тормозит
Sergey Platonov
серией условий?
да, добавить в первую таблицу - multiIf(Id=1234, 2345, Id=3456, 4567, null) as join_key и по нему делать джойн
источник

SP

Sergey Platonov in ClickHouse не тормозит
можно и так, да
источник

СК

Саша Козлов... in ClickHouse не тормозит
Slach
вот этот вот BackgroundJobExecutor это к запросу отношения не имеет
там ниже stacktrace покажите его
источник

SP

Sergey Platonov in ClickHouse не тормозит
Konstantin Sevastianov
да, добавить в первую таблицу - multiIf(Id=1234, 2345, Id=3456, 4567, null) as join_key и по нему делать джойн
SELECT t1.*, t2.*, multiIf(t1.id = 1, 2, t1.id = 2, 3, null) as join_k
From test t1, test t2
WHERE join_k = t2.id менее наглядно, но вцелом ок
источник

O

Oleg Bazdyrev in ClickHouse не тормозит
Error executing query INSERT INTO db.some_tbl (date, user_id, event_uuid, message, type) FORMAT TabSeparated: Poco::Exception. Code: 1000, e.code() = 2, e.displayText() = File not found: /var/lib/clickhouse/data/db/some_tbl/tmp_sizes.json, e.what() = File not found

что еще tmp_sizes.json ?
источник

O

Oleg Bazdyrev in ClickHouse не тормозит
не с TinyLog связано?
источник

S

Slach in ClickHouse не тормозит
ну судя по stacktrace у вас реально отвалился Background Merge потому что ему памяти не хватило
и это никак не относится к вашему INSERT запросу потому что {} вместо {query-uuid} в начале ошибки стоит

сколько памяти на сервере всего?

сколько стоит max_memory_usage \ max_memory_usage_ratio?
советую почитать
https://clickhouse.tech/docs/en/operations/settings/query-complexity/
и
посмотреть куда вообще уходит у вас память
select formatReadableSize(sum(bytes_allocated)) from system.dictionaries;

SELECT
   database,
   name,
   formatReadableSize(total_bytes)
FROM system.tables
WHERE engine = 'Memory'

select formatReadableSize(sum(memory_usage)) from system.merges;

select formatReadableSize(sum(memory_usage)) from system.processes;

SELECT
   initial_query_id,
   formatReadableSize(memory_usage),
   formatReadableSize(peak_memory_usage),
   query
FROM system.processes
ORDER BY peak_memory_usage DESC
LIMIT 10

SELECT
   initial_query_id,
   formatReadableSize(memory_usage),
   query
FROM system.query_log
WHERE (event_date >= today()) AND (event_time >= (now() - 7200))
ORDER BY memory_usage DESC
LIMIT 10
источник

S

Slach in ClickHouse не тормозит
Oleg Bazdyrev
Error executing query INSERT INTO db.some_tbl (date, user_id, event_uuid, message, type) FORMAT TabSeparated: Poco::Exception. Code: 1000, e.code() = 2, e.displayText() = File not found: /var/lib/clickhouse/data/db/some_tbl/tmp_sizes.json, e.what() = File not found

что еще tmp_sizes.json ?
SHOW CREATE TABLE db.some_tbl ?
папка /var/lib/clickhouse/data/db/some_tbl/ говорит о том что это именно данных каких то не хватает (clickhouse/data данные, clickhouse/metadata/ sql файлы с определением таблиц)
источник

O

Oleg Bazdyrev in ClickHouse не тормозит
ну то, что "File not found" - это нехватка файла - это понятно
источник

O

Oleg Bazdyrev in ClickHouse не тормозит
в CREATE TABLE - это просто TinyLog
источник

S

Slach in ClickHouse не тормозит
Sergey Platonov
что не такWITH [[1, 1], [2, 3]] AS c
SELECT
   t1.*,
   c
[1] AS c1,
   c
[2] AS c2,
   t2.*
FROM test AS t1
ARRAY JOIN c
INNER JOIN test AS t2 ON t2.id = toInt32(c[2])
WHERE t1.id = (c[1]) ошибка DB::Exception: No alias for non-trivial value in ARRAY JOIN
EXPLAIN SYNTAXT в начало добавьте и запустите
источник