Size: a a a

ClickHouse не тормозит

2020 July 10

D

Dj in ClickHouse не тормозит
Adlet Sarsembaev
Добрый вечер всем. Насколько корректно делать батчевый забор данных из кликхауса? Возможно немного вопрос глупый, буду рад, если кто нибудь скинет референсы интересные.
Забирали миллиард норм, он стримит. Незаметно. Особо зла нет если "левый" ордер бай не делать...
источник

В

Вадим in ClickHouse не тормозит
Ребят привет. Такой кейс, пишется большое кол-во полей через TSV. Одной из полей строковое, и в нем встречаются '\n'. Суть в том что как только попадает '\n' запись не происходит, в связи с тем что в tsv \n считается новой записью. Вырезать не вариант, надо сохранить как есть. Может знает кто как заэкранировать это?
источник

AK

Anton Khokhrin in ClickHouse не тормозит
Вадим
Ребят привет. Такой кейс, пишется большое кол-во полей через TSV. Одной из полей строковое, и в нем встречаются '\n'. Суть в том что как только попадает '\n' запись не происходит, в связи с тем что в tsv \n считается новой записью. Вырезать не вариант, надо сохранить как есть. Может знает кто как заэкранировать это?
\\n тогда сохранится как текст \n
источник

SA

Sergey Ageev in ClickHouse не тормозит
Всем привет.
Можно ли в клике создать справочник который в качестве ключа содержит диапазоны дат?
К примеру так: date1, date2, value
И искать значение в справочниках по диапазонам?
источник

DT

Dmitry Titov in ClickHouse не тормозит
Sergey Ageev
Всем привет.
Можно ли в клике создать справочник который в качестве ключа содержит диапазоны дат?
К примеру так: date1, date2, value
И искать значение в справочниках по диапазонам?
посмотри range layout словарей
источник

SA

Sergey Ageev in ClickHouse не тормозит
Dmitry Titov
посмотри range layout словарей
Спасибо, наткнулся на range_hashed. Что-то не сориентировался в документации изначально
источник

❌ Constantine ❌ in ClickHouse не тормозит
Подскажите merge_tree/max_files_to_remove_in_alter_columns на данный момент не работает? В версии 20.1.11.73 вижу такую ошибку:

2020.07.10 07:51:57.119153 [ 35 ] {} <Error> DB.TABLE (ReplicatedMergeTreeAlterThread): void DB::ReplicatedMergeTreeAlterThread::run(): Code: 345, e.displayText() = DB::Exception: Suspiciously many (130) files
....
Aborting just in case. If it is not an error, you could increase merge_tree/max_files_to_remove_in_alter_columns parameter in configuration file (current value: 50), Stack trace (when copying this message, always include the lines below):

0. 0x1033ddd0 Poco::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)  in /usr/bin/clickhouse
1. 0x8ea95cd DB::Exception::Exception(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&, int)  in /usr/bin/clickhouse
2. 0xd80e775 ?  in /usr/bin/clickhouse
3. 0xd974914 DB::ReplicatedMergeTreeAlterThread::run()  in /usr/bin/clickhouse
4. 0xcf60925 DB::BackgroundSchedulePoolTaskInfo::execute()  in /usr/bin/clickhouse
5. 0xcf60f42 DB::BackgroundSchedulePool::threadFunction()  in /usr/bin/clickhouse
6. 0xcf61080 ?  in /usr/bin/clickhouse
7. 0x8eccf9b ThreadPoolImpl<std::__1::thread>::worker(std::__1::__list_iterator<std::__1::thread, void*>)  in /usr/bin/clickhouse
8. 0x8ecb3a3 ?  in /usr/bin/clickhouse
9. 0x76ba start_thread  in /lib/x86_64-linux-gnu/libpthread-2.23.so
10. 0x10741d __clone  in /lib/x86_64-linux-gnu/libc-2.23.so
(version 20.1.11.73 (official build))


В ошибке упомянуто, что текущее значение 50, хотя на самом деле 200:

SELECT *
FROM system.merge_tree_settings
WHERE name = 'max_files_to_modify_in_alter_columns'

┌─name─────────────────────────────────┬─value─┬─changed─┬─description─────────────────────────────────────────────────────────────────────────────┐
│ max_files_to_modify_in_alter_columns │ 200   │       1 │ Not apply ALTER if number of files for modification(deletion, addition) more than this. │
└──────────────────────────────────────┴───────┴─────────┴─────────────────────────────────────────────────────────────────────────────────────────┘


Как бороться с этим?
источник

PP

Pavel Petkilev in ClickHouse не тормозит
Всем привет! В документации описана агрегатная функция "windowFunnel", но ничего не сказано о таких ее вариантах как "windowFunnelIf", " windowFunnelArray", "windowFunnelState".

Кто-нибудь может привести синтаксис этих функций, привести примеры ?
источник

AK

Anton Khokhrin in ClickHouse не тормозит
Pavel Petkilev
Всем привет! В документации описана агрегатная функция "windowFunnel", но ничего не сказано о таких ее вариантах как "windowFunnelIf", " windowFunnelArray", "windowFunnelState".

Кто-нибудь может привести синтаксис этих функций, привести примеры ?
источник

K

Kid in ClickHouse не тормозит
Привет. Пытаюсь через драйвер питона выполнить команду. Но, как я понимаю, существующий метод execute не может подставить в качестве параметров строку. Отсюда выполнить запрос с подстановкой наименования таблицы не получается, лишние кавычки.
Если кто-то знает как экранировать или обойти это, подскажите плз)
источник

PP

Pavel Petkilev in ClickHouse не тормозит
спасибо
источник

RO

Required Optional in ClickHouse не тормозит
Доброе время суток, коллеги! Вопрос такого плана: если альтером на реплецированную таблицу добавят индекс, то данные уже добавленные будут до-индексированы автоматически или надо проводить дополнительные танцы с бубнами типа OPTIMIZE TABLE ... FINAL? И второй вопрос в догонку. По идее при массивной вставке в таблицу регрессии в темпе вставки данных не обнаруженно при добавленных индексах в таблице, что дает предположение, что идексы работают асинхронно в бэкграунде. Насколько верно такое предположение?
источник

TG

Tagir Gumerov in ClickHouse не тормозит
Required Optional
Доброе время суток, коллеги! Вопрос такого плана: если альтером на реплецированную таблицу добавят индекс, то данные уже добавленные будут до-индексированы автоматически или надо проводить дополнительные танцы с бубнами типа OPTIMIZE TABLE ... FINAL? И второй вопрос в догонку. По идее при массивной вставке в таблицу регрессии в темпе вставки данных не обнаруженно при добавленных индексах в таблице, что дает предположение, что идексы работают асинхронно в бэкграунде. Насколько верно такое предположение?
Верно, новые данные летят с новым индексом, старые обновляются асинхронно вместе с мерджами
https://clickhouse.tech/docs/ru/sql-reference/statements/alter/amp/#manipuliatsii-s-indeksami
источник

RO

Required Optional in ClickHouse не тормозит
Tagir Gumerov
Верно, новые данные летят с новым индексом, старые обновляются асинхронно вместе с мерджами
https://clickhouse.tech/docs/ru/sql-reference/statements/alter/amp/#manipuliatsii-s-indeksami
"Если индекс появился в метаданных, то он начнет считаться в последующих слияниях и записях в таблицу, а не сразу после выполнения операции ALTER. " Вот это блин совсем не понятно. Вернее понятно, что начнет ситать при новых слияниях, но не понятно добавка индекса запустит ли эти слияния в фоновом режиме или его нужно форсировать путем OPTIMIZE... Посмотрел на разных языках, это что-то... В английском и французском вообще эта фраза отсутствует...
источник

K

Kostya in ClickHouse не тормозит
Kid
Привет. Пытаюсь через драйвер питона выполнить команду. Но, как я понимаю, существующий метод execute не может подставить в качестве параметров строку. Отсюда выполнить запрос с подстановкой наименования таблицы не получается, лишние кавычки.
Если кто-то знает как экранировать или обойти это, подскажите плз)
источник

И

Илья in ClickHouse не тормозит
Коллеги, никто не знает как можно drop partition по датам. Нужно например удалить все данные старее 5 дней. Я в интернете не нашел нормальных доков по этому вопросу.
источник

VS

Vladyslav Sakun in ClickHouse не тормозит
Подскажите, какое максимально рекомендуемое число записей может содержать словарь?
А то в перспективе могут быть словари (MySQL) на 200-300 миллионов
источник

K

Kid in ClickHouse не тормозит
К сожалению, не получается таким способом решить.
вот кусочек кода:
res = [{'table': 'test1', 'database': 'test'}, {'table': 'test2', 'database': 'test'}]
query = 'select * from %(database)s.%(table)s'
for i in res:
   client.execute(query, i)

Получаю ошибку: DB::Exception: Syntax error: failed at position 16: 'test'.'test1'
источник

PL

Piotr Liakhavets in ClickHouse не тормозит
Kid
К сожалению, не получается таким способом решить.
вот кусочек кода:
res = [{'table': 'test1', 'database': 'test'}, {'table': 'test2', 'database': 'test'}]
query = 'select * from %(database)s.%(table)s'
for i in res:
   client.execute(query, i)

Получаю ошибку: DB::Exception: Syntax error: failed at position 16: 'test'.'test1'
query = 'select count(*) from {database}.{table}'
for i in res:
   client.execute(query.format(**i))
источник

K

Kid in ClickHouse не тормозит
Piotr Liakhavets
query = 'select count(*) from {database}.{table}'
for i in res:
   client.execute(query.format(**i))
Благодарю, а выше юзер Костя, это не основной разработчик драйвера?
источник