Size: a a a

ClickHouse не тормозит

2020 August 27

M

Maxim in ClickHouse не тормозит
Спасибо!
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Dj
ничего не понял, но по идее order by pk desc/asc должен быть моментальным.


>Но тут хочу понять, можно ли на КХ в дополнение повесить OLTP нагрузку по подобным запросам, которые ложатся на primary key.

нельзя если QPS > 100. в КХ оверхед высокий. Лучше батчить запросы.
Сбатчевать то сможем на клиенте. Или написать батчующий прокси. Но не сильно понятно, как подобные запросы описать батчем.

Есть список таймстампов, и надо для каждого топ N строк перед этим таймстампом выбрать.

На ум приходит только
Select...
Union all
Select...
Union all
И так 100 раз
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Сбатчевать то сможем на клиенте. Или написать батчующий прокси. Но не сильно понятно, как подобные запросы описать батчем.

Есть список таймстампов, и надо для каждого топ N строк перед этим таймстампом выбрать.

На ум приходит только
Select...
Union all
Select...
Union all
И так 100 раз
select * from table where myKey IN(2,3,4,100500,9000)
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Dj
select * from table where myKey IN(2,3,4,100500,9000)
Не, мне же надо не четкое вхождение, а "последние N записей перед X"
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Не, мне же надо не четкое вхождение, а "последние N записей перед X"
тоже можно если уверены что условно куда-то войдет минимум Н записей

select magicArrayLambdas from (
select * from where
(timestamp between a and b) or
(timestamp between a and b) or
(timestamp between a and b) or
(timestamp between a and b) or
(timestamp between a and b)
)
источник

D

Dj in ClickHouse не тормозит
union all в самом крайнем случае тоже ок
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Dj
тоже можно если уверены что условно куда-то войдет минимум Н записей

select magicArrayLambdas from (
select * from where
(timestamp between a and b) or
(timestamp between a and b) or
(timestamp between a and b) or
(timestamp between a and b) or
(timestamp between a and b)
)
Так такой синтаксис гору данных поднимет. А мне, по сути, нужен asof join, но через primary key
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Dj
union all в самом крайнем случае тоже ок
Попробовал. Почти линейно растёт время
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrii Kakoichenko
Так такой синтаксис гору данных поднимет. А мне, по сути, нужен asof join, но через primary key
т.е. для большого кол-ва широких записей надо найти предыдущую? тут кх плохо подходит, индекс разреженный
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
т.е. для большого кол-ва широких записей надо найти предыдущую? тут кх плохо подходит, индекс разреженный
Там не btree?
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Там не btree?
нет
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrii Kakoichenko
Там не btree?
нет, и в индексе только 1 из 8192 записей, поэтому читаются лишние строки из таблицы

что будет если


prewhere Timestamp >= '2020-07-11 10:00:00' and Timestamp < '2020-07-12 10:00:00'
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Попробовал. Почти линейно растёт время
сделайте ДДЛ и скрипт заливки рендом данных... так бесполезно пытаться
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Так такой синтаксис гору данных поднимет. А мне, по сути, нужен asof join, но через primary key
конституция КХ. статья 1.
лучше один раз гору данных поднять, чем насиловать КХ по 100 раз.
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Dj
сделайте ДДЛ и скрипт заливки рендом данных... так бесполезно пытаться
Там реальных 37 млрд строк лежит) Зачем рендом?
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Так такой синтаксис гору данных поднимет. А мне, по сути, нужен asof join, но через primary key
"Запомни: лучше день потерять, потом за пять минут долететь. "
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Там реальных 37 млрд строк лежит) Зачем рендом?
блин, это если вам помощь нужна с запросом, а так, удачи )
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
нет, и в индексе только 1 из 8192 записей, поэтому читаются лишние строки из таблицы

что будет если


prewhere Timestamp >= '2020-07-11 10:00:00' and Timestamp < '2020-07-12 10:00:00'
Чуть-чуть улучшилось. Вместо 900 с хвостиком МБ в память 853 поднимается. Время и строки не поменялись
источник

AK

Andrii Kakoichenko in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
нет, и в индексе только 1 из 8192 записей, поэтому читаются лишние строки из таблицы

что будет если


prewhere Timestamp >= '2020-07-11 10:00:00' and Timestamp < '2020-07-12 10:00:00'
Есть минусы кроме роста объёма в RAM от уменьшения гранул?
источник

D

Dj in ClickHouse не тормозит
Andrii Kakoichenko
Есть минусы кроме роста объёма в RAM от уменьшения гранул?
тормоза ещё... при планировании запроса... заметные
источник