Size: a a a

ClickHouse не тормозит

2020 June 19

V

Vladimir in ClickHouse не тормозит
Dj
insert не вернется (синхронный), но можете слать в несколько потоков
можно сколько угодно вставлять если есть понимание, что каждый новый инсерт создаст отдельный кусок с Н-файлов (колонки, индексы, засечки), которые будут мерджится в фоне
большой инсерт лучше - потому что он уже сортирует все заранее во вставляемом батче
—-
как часто вам надо вставить эти несколько ТБ один раз? раз в минуту? раз в день? есть ли ограничение на скорость?
вставлять параллельно большими батчами - быстрее всего - оптимальный размер определять методом проб и ошибок
Если я не ошибаюсь, то по http(jdbc) ответ возвращается синхронно. Вставлять нужно раз в месяц. Ограничения на скорость видимо нет(чтение файла с данными разве что). У меня было, что при интенсивной вставке было 2000 партов
источник

RO

Required Optional in ClickHouse не тормозит
Евгений
подскажите пожалуйста, какую функцию использовать?

Задача выбрать все колонки в строке с минимальным timestamp для ID за дату
просто SELECT ID, min(timestamp) нельзя, т.к. есть другие колонки с разными значениями
argMin(ID,timestamp)?
источник

D

Dj in ClickHouse не тормозит
Vladimir
Если я не ошибаюсь, то по http(jdbc) ответ возвращается синхронно. Вставлять нужно раз в месяц. Ограничения на скорость видимо нет(чтение файла с данными разве что). У меня было, что при интенсивной вставке было 2000 партов
ну, вставляйте параллельно очень большими кусками (как память позволяет)
источник

V

Vladimir in ClickHouse не тормозит
Dj
ну, вставляйте параллельно очень большими кусками (как память позволяет)
т.е. если я докину серверу памяти, то можно 100М слать? Все упирается только в память или еще ограничения есть?
источник

V

Vladimir in ClickHouse не тормозит
Кроме IO :)
источник

D

Dj in ClickHouse не тормозит
Vladimir
т.е. если я докину серверу памяти, то можно 100М слать? Все упирается только в память или еще ограничения есть?
ну вставлять размерами больше чем парты КХ которые больше не будут мерджится смысла точно нет. а так, мы ограничений не встречали.
ИО - это не тяжелое ограничение, если не на САН, обычно упирается в процессор/память
источник

V

Vladimir in ClickHouse не тормозит
Dj
ну вставлять размерами больше чем парты КХ которые больше не будут мерджится смысла точно нет. а так, мы ограничений не встречали.
ИО - это не тяжелое ограничение, если не на САН, обычно упирается в процессор/память
Спасибо!
источник

D

Dj in ClickHouse не тормозит
Dj
ни у кого клиент не отваливался так? причем стабильно на конкретный запрос (умирает после того как выставил join algorithm в partial_merge о_О), после ошибки коннекта нет надо выходить из клиента и заходить обратно
20.3.11
Code: 32, e.displayText() = DB::Exception: Attempt to read after eof: while receiving packet from localhost:9000, Stack trace (when copying this message, always include the lines below):

0. Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int) @ 0x1051b3a0 in /usr/bin/clickhouse
1. DB::throwReadAfterEOF() @ 0x8f55caf in /usr/bin/clickhouse
2. DB::readVarUInt(unsigned long&, DB::ReadBuffer&) @ 0x90389a6 in /usr/bin/clickhouse
3. DB::Connection::receivePacket() @ 0xdb111d4 in /usr/bin/clickhouse
4. DB::Client::receiveAndProcessPacket() @ 0x9079c45 in /usr/bin/clickhouse
5. DB::Client::receiveResult() @ 0x907ad62 in /usr/bin/clickhouse
6. DB::Client::processSingleQuery(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, std::__1::shared_ptr<DB::IAST>) @ 0x907b64a in /usr/bin/clickhouse
7. DB::Client::process(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&) @ 0x907c326 in /usr/bin/clickhouse
8. DB::Client::mainImpl() @ 0x907dc23 in /usr/bin/clickhouse
9. DB::Client::main(std::__1::vector<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> >, std::__1::allocator<std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > > > const&) @ 0x907fdaa in /usr/bin/clickhouse
10. Poco::Util::Application::run() @ 0x1043d857 in /usr/bin/clickhouse
11. mainEntryClickHouseClient(int, char**) @ 0x9054cf9 in /usr/bin/clickhouse
12. main @ 0x8ef8799 in /usr/bin/clickhouse
13. __libc_start_main @ 0x22555 in /usr/lib64/libc-2.17.so
14. _start @ 0x8ef802e in /usr/bin/clickhouse
а не, все хорошо, сегфолт в мердж жойне )))
2020.06.19 15:13:30.829653 [ 14927 ] {} <Fatal> BaseDaemon: (version 20.3.11.97 (official build)) (from thread 14872) (query_id: 864f09d2-8cc0-44df-8a44-72fc974269e8) Received signal Segmentation fault (11).
2020.06.19 15:13:30.829695 [ 14927 ] {} <Fatal> BaseDaemon: Address: 0x1 Access: read. Address not mapped to object.
2020.06.19 15:13:30.829718 [ 14927 ] {} <Fatal> BaseDaemon: Stack trace: 0xd5c7718 0xd445dbe 0xd446c24 0xd4540a0 0xd0c8f83 0xd0ccc7e 0xde3f812 0xde428c2 0xdb75075 0xdbb9581 0xdbbd70d 0xdbbe0d2 0x8f757e7 0x8f73c33 0x7fdf6df78ea5 0x7fdf6e7958dd
2020.06.19 15:13:30.879340 [ 14927 ] {} <Fatal> BaseDaemon: 3. DB::ColumnString::insertFrom(DB::IColumn const&, unsigned long) @ 0xd5c7718 in /usr/bin/clickhouse
2020.06.19 15:13:30.879432 [ 14927 ] {} <Fatal> BaseDaemon: 4. ? @ 0xd445dbe in /usr/bin/clickhouse
2020.06.19 15:13:30.879490 [ 14927 ] {} <Fatal> BaseDaemon: 5. DB::MergeJoin::allInnerJoin(DB::MergeJoinCursor&, DB::Block const&, DB::Block const&, std::__1::vector<COW<DB::IColumn>::mutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::mutable_ptr<DB::IColumn> > >&, std::__1::vector<COW<DB::IColumn>::mutable_ptr<DB::IColumn>, std::__1::allocator<COW<DB::IColumn>::mutable_ptr<DB::IColumn> > >&, unsigned long&, unsigned long&) @ 0xd446c24 in /usr/bin/clickhouse
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Vladimir
Если я не ошибаюсь, то по http(jdbc) ответ возвращается синхронно. Вставлять нужно раз в месяц. Ограничения на скорость видимо нет(чтение файла с данными разве что). У меня было, что при интенсивной вставке было 2000 партов
а какой формат используется? JDBC умеет быстрые форматы в insert-х, rowbinary, native
источник

V

Vladimir in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
а какой формат используется? JDBC умеет быстрые форматы в insert-х, rowbinary, native
rowbinary. В официальном клиенте
источник

V

Vladimir in ClickHouse не тормозит
При параллельных у меня минут через 5 валится   Cannot read from istream at offset
источник

V

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

DC

Denny Crane (I don't... in ClickHouse не тормозит
Vladimir
rowbinary. В официальном клиенте
ну можно лить сразу по много миллионов записей, инсерт идет в оперативку, кусок создается по max_insert_block_size=1mil, min_insert_block_size_bytes=256M
сортируется, пишется на диск, чтобы сократить кол-во мержей надо делать куски больше, типа ставить max_insert_block_size=5mil min_insert_block_size_bytes=100G ну инсертить по 5mil за раз
источник

V

Vladimir in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ну можно лить сразу по много миллионов записей, инсерт идет в оперативку, кусок создается по max_insert_block_size=1mil, min_insert_block_size_bytes=256M
сортируется, пишется на диск, чтобы сократить кол-во мержей надо делать куски больше, типа ставить max_insert_block_size=5mil min_insert_block_size_bytes=100G ну инсертить по 5mil за раз
ок, спасибо
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
хороший тикет вообще непонятно что за запрос упал, инсерт или селект, ни примеров
источник

Е

Евгений in ClickHouse не тормозит
Dmitry Titov
argMin
или ORDER BY id, ts ASC LIMIT 1 BY id
argMin в таком случае придется прописывать для каждой колонки, которую я запрашиваю?

В таблице много уникальных ID за дату, и надо взять для каждого ID данные из строки, в которой для него минимальный ts
источник

V

Vladimir in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
хороший тикет вообще непонятно что за запрос упал, инсерт или селект, ни примеров
ddl же лежит. И про инсерты написал
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Vladimir
ddl же лежит. И про инсерты написал
да я дочитал
источник

V

Vladimir in ClickHouse не тормозит
может еще что-то полезное положить?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Евгений
argMin в таком случае придется прописывать для каждой колонки, которую я запрашиваю?

В таблице много уникальных ID за дату, и надо взять для каждого ID данные из строки, в которой для него минимальный ts
да, но можно сделать воть так
argMax((va1,val2,val3,val4),ts).1 as val1,  argMax((va1,val2,val3,val4),ts).2 as val2,  argMax((va1,val2,val3,val4),ts).3 as val3,  argMax((va1,val2,val3,val4),ts).4 as val4

и тогда он только 1 раз посчитает эту штуку
источник