Size: a a a

ClickHouse не тормозит

2020 July 06

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Er
Ещё нубский вопрос:

create table T (a Int32, b Int32, c Int32, ...)
engine = ReplacingMergeTree()
order by (a b, c);


Для эффективного выполнения запросов select max(c) from T надо ли делать дополнительный индекс?
не умеет КХ оптимизацию max используя индексы (плюс инексы разреженные, там только часть значений), т.е. можно пробовать заменить max на order by / limit но нужно понимать что и зачем
источник

AE

Alexey Er in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
не умеет КХ оптимизацию max используя индексы (плюс инексы разреженные, там только часть значений), т.е. можно пробовать заменить max на order by / limit но нужно понимать что и зачем
Упс...

Пытаюсь добавление данных делать (INSERT SELECT) и передать в запрос внешней базы параметр "искать после" (id или даты). Вот это параметр беру подзапросом select max(), или с limit 1 можно то же сделать:

INSERT INTO T
SELECT * FROM my.view_T WHERE id > (select max(id) from T) ORDER BY id
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Er
Упс...

Пытаюсь добавление данных делать (INSERT SELECT) и передать в запрос внешней базы параметр "искать после" (id или даты). Вот это параметр беру подзапросом select max(), или с limit 1 можно то же сделать:

INSERT INTO T
SELECT * FROM my.view_T WHERE id > (select max(id) from T) ORDER BY id
ну не надо так делать. Запоминайте id в отдельной табличке ReplacingMergeTree и лучше на стороне mysql
источник

AE

Alexey Er in ClickHouse не тормозит
Чорд :)

А как так: аналитическая СУБД не может быстро посчитать max()?
Пофиг на мой кривой импорт, но это же входит в её основное назначение. Возможно, надо другим способом считать?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Er
Чорд :)

А как так: аналитическая СУБД не может быстро посчитать max()?
Пофиг на мой кривой импорт, но это же входит в её основное назначение. Возможно, надо другим способом считать?
это зависит, например если колонка с id занимает на диске 800ГБ, то КХ будет выполнять запрос select max(id) 800 сек., тупо из-за скорости диска
источник

AE

Alexey Er in ClickHouse не тормозит
Ну т.е. fullscan колонки... Странно.

Ясно, спасибо. Будем думать.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexey Er
Ну т.е. fullscan колонки... Странно.

Ясно, спасибо. Будем думать.
99.99% запросов в аналитечских бд выполняются фулсканом
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
т.е. у меня обычно запросы group by 1,2,3,4,....22!! , следующий запрос все поля в group by в совершенно в другом порядке и ...,17
источник

DC

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

DC

Denny Crane (I don't... in ClickHouse не тормозит
можно сделать Materialized view который будет max считать сам и хранить одну строку
источник

DP

Dorian Peregrim in ClickHouse не тормозит
А если вот я в таблице, которая читает из кафки жду строку, а там какой то злодей int прислал, то все, ничего не поделать? Ставить параметр "пропскать плохие сообщения"?
источник

ab

andrew baranov in ClickHouse не тормозит
Всем привет, подскажите пожалуйста клик на каждую транзакцию новый коннект поднимает?
в логе очень часто, с интервалом в несколько секунд идут записи

2020.07.06 09:54:38.557254 [ 188 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: , user: .
2020.07.06 09:54:38.742469 [ 177 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: , user: .
источник

D

Dj in ClickHouse не тормозит
andrew baranov
Всем привет, подскажите пожалуйста клик на каждую транзакцию новый коннект поднимает?
в логе очень часто, с интервалом в несколько секунд идут записи

2020.07.06 09:54:38.557254 [ 188 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: , user: .
2020.07.06 09:54:38.742469 [ 177 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: , user: .
В кх нет сессий/транзакций как таковых.
По TCP наверное как то можно в одном коннекте запускать запросы, родной клиент вроде держит коннект открытым, зависит от драйвера...
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dorian Peregrim
А если вот я в таблице, которая читает из кафки жду строку, а там какой то злодей int прислал, то все, ничего не поделать? Ставить параметр "пропскать плохие сообщения"?
да, либо двигать оффсет в кафке каким-то клиентом
источник

DP

Dorian Peregrim in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
да, либо двигать оффсет в кафке каким-то клиентом
Спасибо
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
andrew baranov
Всем привет, подскажите пожалуйста клик на каждую транзакцию новый коннект поднимает?
в логе очень часто, с интервалом в несколько секунд идут записи

2020.07.06 09:54:38.557254 [ 188 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: , user: .
2020.07.06 09:54:38.742469 [ 177 ] {} <Debug> TCPHandler: Connected Golang SQLDriver version 1.1.0, revision: 54213, database: , user: .
так это к go драйверу вопрос или к вашему коду
источник

ab

andrew baranov in ClickHouse не тормозит
спасибо, буду разбираться
источник

N

Nik in ClickHouse не тормозит
Dj
В кх нет сессий/транзакций как таковых.
По TCP наверное как то можно в одном коннекте запускать запросы, родной клиент вроде держит коннект открытым, зависит от драйвера...
а вообще это норма для него - tcp реконнекты на каждый запрос?
источник

N

Nik in ClickHouse не тормозит
по мне выглядит очень нездорово
источник

YV

Yuri Velgosha in ClickHouse не тормозит
Nik
а вообще это норма для него - tcp реконнекты на каждый запрос?
Кажись стоит уровень логирования на Warn опустить, а то слишком плохо спать будешь :)
источник