Size: a a a

ClickHouse не тормозит

2020 June 15

O

Oleg in ClickHouse не тормозит
И еще непонятнее - select count() from (select * from table where A and B and C) - возвращает 0
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg
Подскажите как такое может быть: запрос к таблице mergetree select * from table where A and B and C - возвращает записи.
Но при этом точно такой же запрос  select COLNAME from table where A and B and C - возвращает 0 строк?
версия CH 19.17.6
ну 385й баг в КХ про одно и тоже
COLNAME был добавлен alter-м?
источник

O

Oleg in ClickHouse не тормозит
с большой вероятностью да
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg
с большой вероятностью да
ОК, а если select COLNAME from table where identity(A)... and identity(B)... and identity(C)...
источник

O

Oleg in ClickHouse не тормозит
проверил - записи которые возвращаются по select *  - они неправильные, т.е. не соответствуют условию where. Поидее 0 записей - это правильный ответ
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg
проверил - записи которые возвращаются по select *  - они неправильные, т.е. не соответствуют условию where. Поидее 0 записей - это правильный ответ
а полностью запрос покажите
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
скорее всего вы тогда перемудрили с алиасами
источник

O

Oleg in ClickHouse не тормозит
select count() from(
SELECT *
FROM radius.radacct_shard
WHERE
tech = 'XDSL' AND
day >= toDate(1591492883852 / 1000) AND
timestamp > 1591492883852 AND
timestamp < 1591496483852 AND
SQM_Acct_Status_Type = 2 AND
SQM_Acct_Terminate_Cause != 1 AND
SQM_Acct_Terminate_Cause != 10 AND
eipMrfId IN (31) AND
segment IN (1, 2, 3) AND
(eipSubscriberStatus IN (1)) AND
(segment is not null) and
SQM_Acct_User_Name = '77666693935'
)
источник

O

Oleg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
скорее всего вы тогда перемудрили с алиасами
алиасы там есть, да. А что с ними можно перемудрить?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg
select count() from(
SELECT *
FROM radius.radacct_shard
WHERE
tech = 'XDSL' AND
day >= toDate(1591492883852 / 1000) AND
timestamp > 1591492883852 AND
timestamp < 1591496483852 AND
SQM_Acct_Status_Type = 2 AND
SQM_Acct_Terminate_Cause != 1 AND
SQM_Acct_Terminate_Cause != 10 AND
eipMrfId IN (31) AND
segment IN (1, 2, 3) AND
(eipSubscriberStatus IN (1)) AND
(segment is not null) and
SQM_Acct_User_Name = '77666693935'
)
timestamp > 1591492883852 AND
timestamp < 1591496483852 AND

ну т.е. 0 должен строк возвращать, а если сделать мало условий

SELECT *
FROM radius.radacct_shard
WHERE
timestamp > 1591492883852 AND
timestamp < 1591496483852
)

?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Oleg
алиасы там есть, да. А что с ними можно перемудрить?
в кликхаусе алиасинг глобальный, поэтому  если вы пере использовали в select название колонки в таблице, то в WHERE условие будет использовать именно алиас

select number, number% 3 as number FROM numbers(10) WHERE  number = 2;
источник

O

Oleg in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
timestamp > 1591492883852 AND
timestamp < 1591496483852 AND

ну т.е. 0 должен строк возвращать, а если сделать мало условий

SELECT *
FROM radius.radacct_shard
WHERE
timestamp > 1591492883852 AND
timestamp < 1591496483852
)

?
если сделать мало условий - тогда возвратит много записей и это верный результат.

Изменил запрос до еще более странного:
SELECT *
FROM radius.radacct_shard
WHERE
tech = 'XDSL' AND
day >= toDate(1591492883852 / 1000) AND
timestamp > 1591492883852 AND
timestamp < 1591496483852 AND
SQM_Acct_Status_Type = 2 AND
SQM_Acct_Terminate_Cause != 10 AND
SQM_Acct_Terminate_Cause != 10 AND
eipMrfId IN (31) AND
segment IN (1, 2, 3) AND
(eipSubscriberStatus IN (1)) AND
(segment is not null) and
SQM_Acct_User_Name = '77666693935'

См 2 раза указано условие SQM_Acct_Terminate_Cause != 10   - так возвращает несколько записей (неправильных)
Если написать один раз условие  SQM_Acct_Terminate_Cause != 10 - возвращает 0 записей (корректное поведение)
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Oleg
если сделать мало условий - тогда возвратит много записей и это верный результат.

Изменил запрос до еще более странного:
SELECT *
FROM radius.radacct_shard
WHERE
tech = 'XDSL' AND
day >= toDate(1591492883852 / 1000) AND
timestamp > 1591492883852 AND
timestamp < 1591496483852 AND
SQM_Acct_Status_Type = 2 AND
SQM_Acct_Terminate_Cause != 10 AND
SQM_Acct_Terminate_Cause != 10 AND
eipMrfId IN (31) AND
segment IN (1, 2, 3) AND
(eipSubscriberStatus IN (1)) AND
(segment is not null) and
SQM_Acct_User_Name = '77666693935'

См 2 раза указано условие SQM_Acct_Terminate_Cause != 10   - так возвращает несколько записей (неправильных)
Если написать один раз условие  SQM_Acct_Terminate_Cause != 10 - возвращает 0 записей (корректное поведение)
аа, я думал timestamp одинаковый ясно

попробуйте 19.17.9.60, был баг про > 10 условий в where
источник

N

Nikolay in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
хеш на каждый кусок, т.е. один инсерт может породить много кусков и много хешей
Т.е дедубликация на уровне парта?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Nikolay
Т.е дедубликация на уровне парта?
да. В КХ дедупликация вставок на уровне парта
источник

N

Nikolay in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
да. В КХ дедупликация вставок на уровне парта
спасибо, а max_insert_block_size тоже определяет размер парта?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Nikolay
спасибо, а max_insert_block_size тоже определяет размер парта?
да, и он тоже, и много всего другого
источник

N

Nikolay in ClickHouse не тормозит
понял . спасибо, а топутаница. написанно block, а по факту это max_insert_part_sizr
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Nikolay
понял . спасибо, а топутаница. написанно block, а по факту это max_insert_part_sizr
думаю все еще несколько сложнее, но 100% ясности нет у меня
источник

SL

Sergey Lossev in ClickHouse не тормозит
Всем привет

Почему может постоянно лочиться таблица???
DB::Exception: WRITE locking attempt on "data_flat.flat_temp" has timed out! (120000ms) Possible deadlock avoided. Client should retry


Стабильно раз в несколько дней. И ничто не помгает - только полный перезапуск КХ и ручное вычищение партиций, "которые должны быть удалены". Ну это ж не дело... Заколебало, если честно...
источник