Size: a a a

ClickHouse не тормозит

2021 March 09

DT

Dmitry Titov in ClickHouse не тормозит
Mishanya
Привет
подскажите, пожалуйста

есть запрос вида

select …
from distiubted_table
inner join (select … from local_table) // replacing merge tree
any left join (select … from view) // ~100 записей, запрос за 0.001 отрабатывает

запрос этот отрабатывает за 10 секунд

если обернуть верхний запрос во view

create view blabla as селект верхний запрос

то select count() from blabla будет работать уже 30+ секунд

по дебагу глянул, что 2021.03.09 11:34:50.924856 [ 27746 ] {27683dd2-c134-4d4d-a429-19c28d24f620} <Debug> CreatingSetsBlockInputStream: Created. Join with 20244545 entries from 20244545 rows. In 6.572 sec. вот эта штука работает дольше всего.

в чем концепутальная разница 1 и 2 запроса ?
У вас есть WITH в этом запросе?
источник

M

Mishanya in ClickHouse не тормозит
Dmitry Titov
У вас есть WITH в этом запросе?
нет
хотя есть, который any left join (select … from view) // ~100 записей, запрос за 0.001 отрабатывает

но я думаю, что не в нем проблема
источник

DT

Dmitry Titov in ClickHouse не тормозит
Mishanya
нет
хотя есть, который any left join (select … from view) // ~100 записей, запрос за 0.001 отрабатывает

но я думаю, что не в нем проблема
https://github.com/ClickHouse/ClickHouse/issues/12293
Была подобная проблема с  allow_push_predicate_when_subquery_contains_with 0/1

Но не похоже что это оно
источник

M

Mishanya in ClickHouse не тормозит
там просто with типа with select value from table limit 1 , супер просто
источник

M

Mishanya in ClickHouse не тормозит
у меня естсь подозрение, что из-за distributed и джоина локальной таблицы. обертка view ломает
источник

DT

Dmitry Titov in ClickHouse не тормозит
Mishanya
там просто with типа with select value from table limit 1 , супер просто
Попробуйте тогда все таки выполнить запрос
c
set allow_push_predicate_when_subquery_contains_with=0;
и
set allow_push_predicate_when_subquery_contains_with=1;
источник

M

Mishanya in ClickHouse не тормозит
Dmitry Titov
Попробуйте тогда все таки выполнить запрос
c
set allow_push_predicate_when_subquery_contains_with=0;
и
set allow_push_predicate_when_subquery_contains_with=1;
это видимо в более поздних версиях. у меня нет такой настройки
источник

DT

Dmitry Titov in ClickHouse не тормозит
Ага, попробуйте обновится до последней 20.3 тогда
источник

SN

Sergey Novikov in ClickHouse не тормозит
Всем привет!
Хотим хранить медианы по дням в мат вью и обновлять как можно чаще, для чего нужно постоянно пересчитывать всю таблицу (за текущий день). Поможет ли нам в этом live view или есть другие решения?
источник

M

Mishanya in ClickHouse не тормозит
Dmitry Titov
Ага, попробуйте обновится до последней 20.3 тогда
в общем, я удалил вообще этот джоин маленький, там где with, все стало ок. видимо все-таки из-за него. Спасибо!

upd: все-таки не. из-за второго джоина так же долго, даже если там select 1
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Sergey Novikov
Всем привет!
Хотим хранить медианы по дням в мат вью и обновлять как можно чаще, для чего нужно постоянно пересчитывать всю таблицу (за текущий день). Поможет ли нам в этом live view или есть другие решения?
просто кроном, снаружи

есть альтернативный путь типа quantileTDigestState, в MV будет постоянно пересчитывающийся стейт, который будет хранить меньше чем исходный ряд, но с потерей точности.
источник

SN

Sergey Novikov in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
просто кроном, снаружи

есть альтернативный путь типа quantileTDigestState, в MV будет постоянно пересчитывающийся стейт, который будет хранить меньше чем исходный ряд, но с потерей точности.
Окей, спасибо!
источник

DN

Dmitriy Novikov in ClickHouse не тормозит
Привет всем, нужна помощь в настройке clickhouse-jdbc-bridge, что сделал к этому моменту

1 - Запустил в 2 контейнерах CH и саму утилиту
2 - Могу подключиться к через функцию jdbc select * from jdbc() , бд назначения постгрес

Пытаюсь теперь использовать ENGINE=JDBC чтоыб создать таблицу, она создается но валюс с ошибкой при попытке прочитатать данные


> Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 1. Bytes expected: 8.: (at row 1)
> [2021-03-09 16:25:58]   : While executing JDBC (version 21.2.5.5 (official build))
источник

DT

Dmitry Titov in ClickHouse не тормозит
Dmitriy Novikov
Привет всем, нужна помощь в настройке clickhouse-jdbc-bridge, что сделал к этому моменту

1 - Запустил в 2 контейнерах CH и саму утилиту
2 - Могу подключиться к через функцию jdbc select * from jdbc() , бд назначения постгрес

Пытаюсь теперь использовать ENGINE=JDBC чтоыб создать таблицу, она создается но валюс с ошибкой при попытке прочитатать данные


> Code: 33, e.displayText() = DB::Exception: Cannot read all data. Bytes read: 1. Bytes expected: 8.: (at row 1)
> [2021-03-09 16:25:58]   : While executing JDBC (version 21.2.5.5 (official build))
если у вас база назначения postgresql возможно имеет смысл попробовать postgresql table function, может вам хватит
источник

DN

Dmitriy Novikov in ClickHouse не тормозит
Dmitry Titov
если у вас база назначения postgresql возможно имеет смысл попробовать postgresql table function, может вам хватит
Спасибо.
источник

ВВ

Вячеслав Владимиров... in ClickHouse не тормозит
Братцы, подскажите,
было 2 серв - "бакап" тянул данные с рабочего через select from remote(...)
Добавил еще один бакап и с него не проходит remote ни на main ни на второй бакап. Версии новые.
DB::NetException: Timeout: connect timed out: (ххх.ххх.ххх.ххх:9000) (version 21.2.5.5 (official build))
источник

ВВ

Вячеслав Владимиров... in ClickHouse не тормозит
куда копнуть?
источник

АК

Анатолий Костюшин... in ClickHouse не тормозит
Подскажите, может кто сталкивался
Есть следующий код на go
func (o *ClickHouseRepository) function(args) error {
 tx, err := o.db.Beginx()
 if err != nil {
   return fmt.Errorf("db.Beginx() error: %v", err)
 }

 stmt, err := tx.Prepare(SQL)
 if err != nil {
   return fmt.Errorf("tx.Prepare() error: %v", err)
 }
 defer stmt.Close()

 now := time.Now().UTC()
 for k, v := range args {
   _, err = stmt.Exec(args)
   if err != nil {
     return fmt.Errorf("stmt.Exec() error: %v", err)
   }
 }

 return tx.Commit()
}


Подключение к кх через HAProxy, падает на stmt, err := tx.Prepare(SQL) с ошибкой driver: bad connection
источник

DT

Dmitry Titov in ClickHouse не тормозит
Вячеслав Владимиров
Братцы, подскажите,
было 2 серв - "бакап" тянул данные с рабочего через select from remote(...)
Добавил еще один бакап и с него не проходит remote ни на main ни на второй бакап. Версии новые.
DB::NetException: Timeout: connect timed out: (ххх.ххх.ххх.ххх:9000) (version 21.2.5.5 (official build))
какой пинг между серверами?
источник

DT

Dmitry Titov in ClickHouse не тормозит
set connect_timeout=500;
источник