Size: a a a

ClickHouse не тормозит

2019 December 14

KM

Konstantin Malanchev in ClickHouse не тормозит
Добрый день! Работаю на системе с 1 ГБ памяти, возникают существенные проблемы с памятью при заливе данных в таблицу, как в шеле через
| clickhouse-client --query "INSERT INTO ... FORMAT CSV"
так и при копировании/создании таблицы в клиенте через
CREATE TABLE ... AS SELECT ...

Либо память просто кончается и падает исключение, либо упираюсь в любой (доступный в рамках RAM) лимит на пользовательский запрос и падает исключение, либо приходится делать здоровый swap и все тормозит.

Это проблема имеет решение? Поменять какую-то настройку, класть данные кусками? Почему вообще при поточном не рекурсивном заливе так происходит?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Konstantin Malanchev
Добрый день! Работаю на системе с 1 ГБ памяти, возникают существенные проблемы с памятью при заливе данных в таблицу, как в шеле через
| clickhouse-client --query "INSERT INTO ... FORMAT CSV"
так и при копировании/создании таблицы в клиенте через
CREATE TABLE ... AS SELECT ...

Либо память просто кончается и падает исключение, либо упираюсь в любой (доступный в рамках RAM) лимит на пользовательский запрос и падает исключение, либо приходится делать здоровый swap и все тормозит.

Это проблема имеет решение? Поменять какую-то настройку, класть данные кусками? Почему вообще при поточном не рекурсивном заливе так происходит?
Кеш марков по умолчанию 5гб
источник

KM

Konstantin Malanchev in ClickHouse не тормозит
Спасибо, подкручу. Но на 8ГБ системе те же проблемы были
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Но 1гб это нереально мало. Можно уменьшать max/min_compression_block_size, max_insert_block_size.
источник

KM

Konstantin Malanchev in ClickHouse не тормозит
Документация советует вместе с mark_cache_size уменьшать mark_cache_min_lifetime, буду пробовать
источник

KM

Konstantin Malanchev in ClickHouse не тормозит
Спасибо большое!
источник

l

lnuynxa in ClickHouse не тормозит
У вас нет проблем с использованием FORMAT TEMPLATE по http?
источник

l

lnuynxa in ClickHouse не тормозит
lnuynxa
У вас нет проблем с использованием FORMAT TEMPLATE по http?
сам и отвечу, относительный путь для настроек FORMAT TEMPLATE (format_template_*)считается от format_schema_path
и если там пусто, то прилетает этот seg fault
https://github.com/ClickHouse/ClickHouse/issues/8172
источник

SS

Stepan Stepanov in ClickHouse не тормозит
Ребята
Плачу сумму денег тому, кто поможет составить запрос:


user_id  date     action_type_id
1   14-12-2019 00:00:01  1
1   14-12-2019 00:01:02  0

2   14-12-2019 00:05:00  1
2   14-12-2019 00:015:00  0

3   14-12-2019 00:05:00  0

4   14-12-2019 00:05:01  1



Re
sult:
subscribers:     3 (1,2,4) где action_type == 1
unsubscribers: 3 (1,2,3) где action_type == 0
spammers:        1 (1) где diff(date) > 60сек  
unsub_fr_sub:   2 (1,2) где есть action_type 1 и 0

Особенно интересуют spammers и unsubscr_from_subscr
источник
2019 December 15

l

lnuynxa in ClickHouse не тормозит
Stepan Stepanov
Ребята
Плачу сумму денег тому, кто поможет составить запрос:


user_id  date     action_type_id
1   14-12-2019 00:00:01  1
1   14-12-2019 00:01:02  0

2   14-12-2019 00:05:00  1
2   14-12-2019 00:015:00  0

3   14-12-2019 00:05:00  0

4   14-12-2019 00:05:01  1



Re
sult:
subscribers:     3 (1,2,4) где action_type == 1
unsubscribers: 3 (1,2,3) где action_type == 0
spammers:        1 (1) где diff(date) > 60сек  
unsub_fr_sub:   2 (1,2) где есть action_type 1 и 0

Особенно интересуют spammers и unsubscr_from_subscr
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
что такое diff(date) > 60сек ?
источник

S

Senya in ClickHouse не тормозит
похоже на ансабскрайб, только второй тоже подходит под условие
источник

l

lnuynxa in ClickHouse не тормозит
больше похоже на опечатку и действия не должны быть чаще раза в минуту
источник

S

Senya in ClickHouse не тормозит
тогда первый не попадает
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
create table Z Engine=Memory as 
select 1  user_id,  toDateTime('2019-12-14 00:00:01') date, 1 action_type_id  union all
select 1,   toDateTime('2019-12-14 00:01:02'),  0 union all
select 2,   toDateTime('2019-12-14 00:05:00'),  1 union all
select 2,   toDateTime('2019-12-14 00:15:00'),  0 union all
select 3,   toDateTime('2019-12-14 00:05:00'),  0 union all
select 4,   toDateTime('2019-12-14 00:05:01'),  1 ;

SELECT
   sum(subscriber) AS subscribers,
   sum(unsubscriber) AS unsubscribers,
   sum(spammer) AS spammers,
   sum(unsub_fr_sub) AS unsub_fr_subs
FROM
(
   SELECT
       user_id,
       max(action_type_id = 1) AS subscriber,
       max(action_type_id = 0) AS unsubscriber,
       length(arrayFilter((i, j) -> (abs(i - j) > 60), arrayPopBack(arraySort(groupArray(date)) AS d), arrayPopFront(d))) >= 1 AS spammer,
       subscriber AND unsubscriber AS unsub_fr_sub
   FROM Z
   GROUP BY user_id
)

┌─subscribers─┬─unsubscribers─┬─spammers─┬─unsub_fr_subs─┐
│           3 │             3 │        2 │             2 │
└─────────────┴───────────────┴──────────┴───────────────┘
источник

l

lnuynxa in ClickHouse не тормозит
Senya
тогда первый не попадает
может просто чутка не рассчитали)
источник

SS

Stepan Stepanov in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
что такое diff(date) > 60сек ?
где есть action_type 1 и action_type 0 и разница между ними не больше 60 сек, там ошибка, сори
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
ну там легко исправить это в моем варианте, хаха. И теста для этого кейса нету.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
select sum(subscriber) subscribers, sum(unsubscriber) unsubscribers, sum(spammer) spammers, sum(unsub_fr_sub) unsub_fr_subs
from (
  select user_id,
      max(action_type_id=1) subscriber,
      max(action_type_id=0) unsubscriber,  
      length(arrayFilter(i,j -> abs(i.1-j.1)<60 and i.2<>j.2, arrayPopBack(arraySort(groupArray((date,action_type_id))) as d) ,arrayPopFront(d)))>=1 spammer,
      (subscriber and unsubscriber) unsub_fr_sub
  from Z group by user_id
)
источник

l

lnuynxa in ClickHouse не тормозит
SELECT
   sum(spammer) AS spam_cnt,
   sum(unsub_from_sub) AS unsub_from_sub_cnt,
   sum(sub) AS sub_cnt,
   sum(unsub) AS unsub_cnt
FROM
(
   SELECT
       user_id,
       sequenceMatch('(?1)(?t<60)(?2)')(ts, action_type = 1, action_type = 0) AS spammer,
       sequenceMatch('(?1)(?2)')(ts, action_type = 1, action_type = 0) AS unsub_from_sub,
       max(action_type) AS sub,
       1 - min(action_type) AS unsub
   FROM test.test
   GROUP BY user_id
)
источник