Size: a a a

ClickHouse не тормозит

2021 February 12

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Kirill Bespalov
sumState
anyState
можно использовать simpleAggregateFunction, там не нужен -Merge
источник

D

Dj in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
есть доклад "Забиваем телескопом гвозди, или Нестандартные способы использования ClickHouse."
да видел даже вроде, но у нас ЕАВ на нем есть... =) так что у нас не хуже
источник

D

Dj in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
есть доклад "Забиваем телескопом гвозди, или Нестандартные способы использования ClickHouse."
https://altinity.atlassian.net/wiki/spaces/CHKB/pages/196980/A+list+of+videos+Russian+lang а сюда не добавили, ай-яй-яй... можно и премии лишить
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Kirill Bespalov
Привет.

Есть условно большая табличка и простой VIEW

select user_id, count(*) from users group by user_id

Если я буду выполнять поверх такого VIEW запросы вида

select  from view where user_id = A

то предикат user_id = A судя по explain syntax будет выполнен на шаге having. то есть сначала выполнится group by, затем уже только фильтр.

можно ли как-то повлиять на такое поведение?
так все работает, и уже года полтора

create table test(A Int64, B Float) Engine=MergeTree order by A;
insert into test select number, 0  from numbers(10000000)
create view test_view as select A, sum(B)  sb from test group by A;

select * from test_view where A = 42
Processed 8.19 thousand rows

select * from test_view where identity(A) = 42;
Processed 10.00 million rows,
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Dj
https://altinity.atlassian.net/wiki/spaces/CHKB/pages/196980/A+list+of+videos+Russian+lang а сюда не добавили, ай-яй-яй... можно и премии лишить
неуспел, той вике 3 дня от роду
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Короче я не советую накрывать AggregatingMT вьюхой потому что получаются лишние группировки и чтения лишних колонок
в случаях

select a, sum () from
  ( select a,b,c,d, sumMerge() from group by a,b,c,d )
group a

это не оптимизировано. Будут прочитаны b,c,d и отгруппированы.
источник

D

Dj in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
неуспел, той вике 3 дня от роду
из моего списка для коллег можете накинуть дельту
https://controlc.com/29662a67
источник

K

Kid in ClickHouse не тормозит
Добрый вечер. Подскажите плз, для конфига трех ЗК, нужно 3 машины? Нашел статью, разворачивают 3 ЗК на одной машине. Как лушче сделать?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Kid
Добрый вечер. Подскажите плз, для конфига трех ЗК, нужно 3 машины? Нашел статью, разворачивают 3 ЗК на одной машине. Как лушче сделать?
три ЗуКипера нужно для HighAvialabilty

КХ-зу все равно один зукипер или 7
источник

❌ Constantine ❌ in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
"При этом первая задача была с ошибкой синтаксиса и она так же зависла в процессе выполнения и она так же висит"
1. была ошибка синтаксиса и некоторые ноды так и ответили, другие не отвечали и потом запрос отвалился по времени
2. system.distributed_ddl_queue не очень понял. там есть мой запрос. инициатор тот хост где выполнял, а host_name и host_address почему адреса хоста из другого кластера. кластер тот что нужно. статус Unknown. exception_code:    ZOK
3. за статью спасибо ))
источник

AR

Alexander Ryzhenko in ClickHouse не тормозит
Mihail Kuzmin
У меня есть табличка с событиями. Я хочу посчитать воронку вида "какой процент пользователей, которые до этого тыкнули в определенную кнопку, сделали потом что-то".

То есть в обычном мире я бы либо поселектил в переменную пользователей, которые тыкнули в кнопку, а потом поселектил всех пользователей, сделавших что-то и входящих в этот список (переменную), либо сделал в where условие вида user in (select from)
А чем плох select where userId in (select ...)?
источник

D

Dj in ClickHouse не тормозит
https://github.com/ClickHouse/ClickHouse/issues/20451 в общем я тут накатал во имя всех пострадавших =)
источник

AM

Alexey Milovidov in ClickHouse не тормозит
Maxim Dzeckelev
Привет. Помогите пожалуйста разобраться в проблеме, насколько я понимаю она как то связанно с сетью.

версия 21.1.2.15,
на 21.2 тоже воспроизводится

Делаю 10 последовательных селектов с увеличением offset по 100000 записаей из destributed таблицы (~ 1 миллион записей), подобных этому
SELECT date, id, volume
FROM v1_keywords.keywords
WHERE date = '2021-02-09'
ORDER BY id LIMIT ?,?

В произвольный момоент времени во время выполения запроса соеденение с сервером рвётся по причине падения сервера к которому подключен клиент.

Судя про трейсу где то недалеко от этого места вызвавется исключение
https://github.com/ClickHouse/ClickHouse/blob/21.1/src/Client/MultiplexedConnections.cpp#L240


Таблицы:
CREATE TABLE IF NOT EXISTS v1_keywords.local_keywords
   ON CLUSTER cluster
(
   date Date,
   id UInt64,
   volume String,
)
   ENGINE = ReplicatedMergeTree(
            '/clickhouse/tables/{shard}/v1_keywords/local_keywords',
            '{replica}')
       PARTITION BY date
       ORDER BY (date, id, volume)
       SETTINGS index_granularity = 8192;

CREATE TABLE IF NOT EXISTS v1_keywords.keywords
   ON CLUSTER cluster
(
   date Date,
   id UInt64,
   volume UInt32
)
   ENGINE Distributed(cluster, v1_keywords, local_keywords,
          id);


clickhouse-server.log
...
2021.02.11 09:27:41.851524 [ 108 ] {20fa50e4-08d9-41a0-84fa-8537f8a56a67} <Trace> StorageDistributed (keywords): (ch-sub-4:9000) Cancelling query because enough data has been read

clickhouse-server.err.log
...
2021.02.11 09:27:41.855597 [ 44 ] {} <Trace> BaseDaemon: Received signal 11
2021.02.11 09:27:41.856436 [ 115 ] {} <Fatal> BaseDaemon: ########################################
2021.02.11 09:27:41.856816 [ 115 ] {} <Fatal> BaseDaemon: (version 21.1.2.15 (official build), build id: E40526A12E9A8F3819A18694F6B798F10C624D5C) (from thread 108) (query_id: 20fa50e4-08d9-41a0-84fa-8537f8a56a67) Received signal Segmentation fault (11)
2021.02.11 09:27:41.859238 [ 115 ] {} <Fatal> BaseDaemon: Address: 0xa0 Access: read. Address not mapped to object.
2021.02.11 09:27:41.859267 [ 115 ] {} <Fatal> BaseDaemon: Stack trace: 0xf7e3e31 0xf7f3053 0xf7f3787 0xe9a0847 0xf91077c 0xf910f49 0xf91081c 0xf910f49 0xf914500 0xf919005 0x86415ed 0x86451a3 0x7fc06de4a609 0x7fc06dd6b293
2021.02.11 09:27:41.861343 [ 115 ] {} <Fatal> BaseDaemon: 2. DB::Connection::receivePacket(std::__1::function<void (Poco::Net::Socket&)>) @ 0xf7e3e31 in /usr/bin/clickhouse
2021.02.11 09:27:41.861739 [ 115 ] {} <Fatal> BaseDaemon: 3. DB::MultiplexedConnections::receivePacketUnlocked(std::__1::function<void (Poco::Net::Socket&)>) @ 0xf7f3053 in /usr/bin/clickhouse
2021.02.11 09:27:41.861756 [ 115 ] {} <Fatal> BaseDaemon: 4. DB::MultiplexedConnections::drain() @ 0xf7f3787 in /usr/bin/clickhouse
2021.02.11 09:27:41.861774 [ 115 ] {} <Fatal> BaseDaemon: 5. DB::RemoteQueryExecutor::finish(std::__1::unique_ptr<DB::RemoteQueryExecutorReadContext, std::__1::default_delete<DB::RemoteQueryExecutorReadContext> >*) @ 0xe9a0847 in /usr/bin/clickhouse
2021.02.11 09:27:41.862187 [ 115 ] {} <Fatal> BaseDaemon: 6. DB::PipelineExecutor::tryAddProcessorToStackIfUpdated(DB::ExecutingGraph::Edge&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, unsigned long) @ 0xf91077c in /usr/bin/clickhouse
2021.02.11 09:27:41.862205 [ 115 ] {} <Fatal> BaseDaemon: 7. DB::PipelineExecutor::prepareProcessor(unsigned long, unsigned long, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::queue<DB::ExecutingGraph::Node*, std::__1::deque<DB::ExecutingGraph::Node*, std::__1::allocator<DB::ExecutingGraph::Node*> > >&, std::__1::unique_lock<std::__1::mutex>) @ 0xf910f49 in /usr/bin/clickhouse
2021.02.11 09:27:41.862218 [ 115 ] {} <Fatal> BaseDaemon: 8. DB::PipelineExecutor::tryAddProcessorToStackIfU
Проверьте, помогает ли выставление настройки

async_socket_for_remote = 0
источник

MD

Maxim Dzeckelev in ClickHouse не тормозит
Alexey Milovidov
Проверьте, помогает ли выставление настройки

async_socket_for_remote = 0
Спасибо, проверю. Откатился пока на двадцатую версию. Там этих проблем нет.
источник
2021 February 13

AK

Andrew Kochen in ClickHouse не тормозит
Помогите, пожалуйста. Обновляю КХ с 19.17 на 20.8

Были таблицы

CREATE TABLE source
(
   a Int32,
   b Int32,
   c Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY a

и

CREATE TABLE destination
(
   a UInt64,
   st AggregateFunction(argMax, Int32, Int32)
)
ENGINE = AggregatingMergeTree
ORDER BY a

и МВ от первой ко второй


CREATE MATERIALIZED VIEW mv TO destination AS
SELECT
   a,
   argMaxState(c, b) AS st
FROM source
GROUP BY a


На 19.17 вставка в source работала, но на 20.8 перестала:

Conversion from AggregateFunction(argMax, Nullable(Int32), Int32) to AggregateFunction(argMax, Int32, Int32) is not supported: while converting source column st to destination column st: while pushing to view default.mv.


чтобы поправить это попробовал заменить mv на следующую

CREATE MATERIALIZED VIEW mv TO destination AS
SELECT
   a,
   argMaxState(coalesce(c, 0), b) AS st
FROM source
GROUP BY a


Теперь если сделать такую вставку в source:

insert into source values (1,1,1), (1,2,null)


то в destination логично попадают следующая строка:

SELECT
   a,
   argMaxMerge(st)
FROM destination
GROUP BY a


┌─a─┬─argMaxMerge(st)─┐
│ 1 │               0 │
└───┴─────────────────┘



Однако старая схема в 19.17 дала бы результат

┌─a─┬─argMaxMerge(st)─┐
│ 1 │               1 │
└───┴─────────────────┘


Я нисколько не утверждаю, что поведение в какой-то из версий является багом, просто я что-то не придумал как мне написать Materialized View , чтобы точно сохранить поведение старой схемы в 19.17 ?
источник

D

Dj in ClickHouse не тормозит
Andrew Kochen
Помогите, пожалуйста. Обновляю КХ с 19.17 на 20.8

Были таблицы

CREATE TABLE source
(
   a Int32,
   b Int32,
   c Nullable(Int32)
)
ENGINE = MergeTree
ORDER BY a

и

CREATE TABLE destination
(
   a UInt64,
   st AggregateFunction(argMax, Int32, Int32)
)
ENGINE = AggregatingMergeTree
ORDER BY a

и МВ от первой ко второй


CREATE MATERIALIZED VIEW mv TO destination AS
SELECT
   a,
   argMaxState(c, b) AS st
FROM source
GROUP BY a


На 19.17 вставка в source работала, но на 20.8 перестала:

Conversion from AggregateFunction(argMax, Nullable(Int32), Int32) to AggregateFunction(argMax, Int32, Int32) is not supported: while converting source column st to destination column st: while pushing to view default.mv.


чтобы поправить это попробовал заменить mv на следующую

CREATE MATERIALIZED VIEW mv TO destination AS
SELECT
   a,
   argMaxState(coalesce(c, 0), b) AS st
FROM source
GROUP BY a


Теперь если сделать такую вставку в source:

insert into source values (1,1,1), (1,2,null)


то в destination логично попадают следующая строка:

SELECT
   a,
   argMaxMerge(st)
FROM destination
GROUP BY a


┌─a─┬─argMaxMerge(st)─┐
│ 1 │               0 │
└───┴─────────────────┘



Однако старая схема в 19.17 дала бы результат

┌─a─┬─argMaxMerge(st)─┐
│ 1 │               1 │
└───┴─────────────────┘


Я нисколько не утверждаю, что поведение в какой-то из версий является багом, просто я что-то не придумал как мне написать Materialized View , чтобы точно сохранить поведение старой схемы в 19.17 ?
>argMaxState(c, a) AS st

>argMaxState(coalesce(c, 0), b) AS st

а почему a на b поменялось?
источник

DT

Dmitry Titov in ClickHouse не тормозит
SELECT
   argMax(assumeNotNull(x), y),
   argMax(x, y)
FROM
(
   SELECT
       1 AS x,
       1 AS y
   UNION ALL
   SELECT
       NULL AS x,
       2 AS y
)

Query id: f33b7565-5d19-40c1-b02c-960728e4e932

┌─argMax(assumeNotNull(x), y)─┬─argMax(x, y)─┐
│                           0 │            1 │
└─────────────────────────────┴──────────────┘
источник

AK

Andrew Kochen in ClickHouse не тормозит
Dj
>argMaxState(c, a) AS st

>argMaxState(coalesce(c, 0), b) AS st

а почему a на b поменялось?
Должно было быть изначально b. Прошу прощения, исправил
источник

DT

Dmitry Titov in ClickHouse не тормозит
Так наоборот должно быть же?
источник

AK

Andrew Kochen in ClickHouse не тормозит
Вроде бы нет
источник