Size: a a a

ClickHouse не тормозит

2020 August 27

S

Slach in ClickHouse не тормозит
Andrey Shevchenko
добрый день, оказалось что использовать в качестве sharding_key монотонно возрастающего int - не лучшая идея, получился перекос 1/10
несмотря на то, что
> distributes data using a hash function on top of the sharding key
(с сайта altinity, в документации CH вообще не нашел информации как шардинг происходит)
в чем может быть причина? хэш функция не нормально распределяет значения?
дак вы сам счетчик сделали как sharding key?
или хеш от этого счетчика?
источник

AS

Andrey Shevchenko in ClickHouse не тормозит
Slach
дак вы сам счетчик сделали как sharding key?
или хеш от этого счетчика?
сам счетчик
источник

AS

Andrey Shevchenko in ClickHouse не тормозит
думал внутри делается хэш исходя из статьи https://altinity.com/blog/2017/6/5/clickhouse-data-distribution
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
Если не * выбирать а одно любое поле что тогда?
Сделал

select Timestamp
from CfLog c
where Timestamp < '2020-07-12 10:00:00'
order by Timestamp desc
limit 1
Отрабатывает 60 мс, но пишет, что пепелопатило 11 млн строк и 85МБ данных

Когда пишу

select Timestamp
from CfLog c
where Timestamp < '2020-07-12 10:00:00' and Timestamp > '2020-07-12 09:59:59'
order by Timestamp desc
limit 1

То <10мс, 34К строк и 267КБ данных

Когда перечислил все столбцы вместо *, то падает по лимиту в 10ГБ (понимаю, что лимит детский, но  для нас важно, чтобы подобные запросы отрабатывали мгновенно, а не поднимали гигабайты с диска)
источник

S

Slach in ClickHouse не тормозит
Andrey Shevchenko
сам счетчик
он и делается остаток от деления на кол-во шардов = индекс искомого шарда

точно счетчик  "монотонно" возрастает?
источник

AS

Andrey Shevchenko in ClickHouse не тормозит
Slach
он и делается остаток от деления на кол-во шардов = индекс искомого шарда

точно счетчик  "монотонно" возрастает?
не совсем понял от чего делается хэш
источник

D

Dj in ClickHouse не тормозит
источник

AS

Andrey Shevchenko in ClickHouse не тормозит
да, счетчик обычный, правда начинается не с 1 и могут быть пропуски в некоторых местах
источник

S

Slach in ClickHouse не тормозит
Andrey Shevchenko
не совсем понял от чего делается хэш
sharding_key  % shards_count => shard index => server name
веса шардов обычно 1
источник

D

Dj in ClickHouse не тормозит
Andrey Shevchenko
да, счетчик обычный, правда начинается не с 1 и могут быть пропуски в некоторых местах
если есть пропуски и веса все одинаковые - то надо хеш самому делать
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrii Kakoichenko
Сделал

select Timestamp
from CfLog c
where Timestamp < '2020-07-12 10:00:00'
order by Timestamp desc
limit 1
Отрабатывает 60 мс, но пишет, что пепелопатило 11 млн строк и 85МБ данных

Когда пишу

select Timestamp
from CfLog c
where Timestamp < '2020-07-12 10:00:00' and Timestamp > '2020-07-12 09:59:59'
order by Timestamp desc
limit 1

То <10мс, 34К строк и 267КБ данных

Когда перечислил все столбцы вместо *, то падает по лимиту в 10ГБ (понимаю, что лимит детский, но  для нас важно, чтобы подобные запросы отрабатывали мгновенно, а не поднимали гигабайты с диска)
set max_threads=1,max_block_size=512

>Когда перечислил все столбцы вместо *, то падает по лимиту в 10ГБ
КХ не для вас. У вас 65к строк распакованными со всеми полями (*) не влезают в 10ГБ
источник

S

Slach in ClickHouse не тормозит
Andrey Shevchenko
да, счетчик обычный, правда начинается не с 1 и могут быть пропуски в некоторых местах
ну вот у вас пропуски слишком большие или веса шардов криво сделаны
источник

AS

Andrey Shevchenko in ClickHouse не тормозит
Dj
если есть пропуски и веса все одинаковые - то надо хеш самому делать
понял, спасибо. то есть неявного хэша поверх шардинг ключа сам КХ не делает и в статье на altinity ошибка, правильно?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slach
так я ошбися, там не реплика, там 2 шарда в каждом по одной реплике

SELECT *
FROM system.clusters
WHERE cluster = 'all-sharded'

┌─cluster─────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name───────────────────────────────┬─host_address─┬─port─┬─is_local─┬─user────┬─default_database─┬─errors_count─┬─estimated_recovery_time─┐
│ all-sharded │         1 │            1 │           1 │ chi-test-cluster-for-alerts-default-0-0 │ 127.0.0.1    │ 9000 │        1 │ default │                  │            0 │                       0 │
│ all-sharded │         2 │            1 │           1 │ chi-test-cluster-for-alerts-default-0-1 │ 172.17.0.12  │ 9000 │        0 │ default │                  │            0 │                       0 │
└─────────────┴───────────┴──────────────┴─────────────┴─────────────────────────────────────────┴──────────────┴──────┴──────────┴─────────┴──────────────────┴──────────────┴─────────────────────────┘
а если не settings а через set до инсерта?
источник

D

Dj in ClickHouse не тормозит
Andrey Shevchenko
понял, спасибо. то есть неявного хэша поверх шардинг ключа сам КХ не делает и в статье на altinity ошибка, правильно?
я  связке Денни и документации верю больше как то...
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Николай Гусев
ClickHouse server version 20.4.5 revision 54434
технически это не проблема, просто повторяйте запрос. И заводите ишью если можете воспроизвести. Я пытаюсь воспроизвести но не получается
источник

S

Slach in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
а если не settings а через set до инсерта?
через параметры коммандной строки получилось
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Slach
через параметры коммандной строки получилось
да прикол в том что settings относится к select
источник

AS

Andrey Shevchenko in ClickHouse не тормозит
какой хэш из тех что есть в кликхаусе рекомендуется использовать для этих целей? оптимальный по проиводительности и дающий хорошее распределение на любых данных?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
так mod -- это хешфункция, где ошибка у альтинити? вы о чем вообще?
источник