
Kirill
04.07.2018
18:33:26
Можно по репозитарию поискать

Wolf
04.07.2018
18:37:04

Kirill
04.07.2018
18:44:28
Да, похоже что вот эту https://github.com/yandex/ClickHouse/blob/2be2b8520b99043b790eb081264b8429f3a1c105/dbms/src/Common/ErrorCodes.cpp#L250

Google

Denis
04.07.2018
18:45:40

Evgeny
04.07.2018
18:56:59
Скажите, а для complex_key_hashed как делать таблицу с движком Dictionary?

Kirill
04.07.2018
18:57:40

Evgeny
04.07.2018
18:58:05
Из документации: create table products (product_id UInt64, title String) Engine = Dictionary(products);
У меня есть словарь, я его теперь хочу отобразить в таблицу

Kirill
04.07.2018
18:59:01
CREATE DATABASE dict Engine=Dictionary;
В ней как таблицы будут все ваши словари

Evgeny
04.07.2018
18:59:56
Ох красота то какая.... Спасибо большое!

Alexey
04.07.2018
19:08:45

antuan
04.07.2018
19:15:51


Alexey
04.07.2018
19:16:45
привет! мы делаем эксперименты в рамках clickhouse базы и разных BI тулзов. сейчас пытаемся подключить BI tool которые умеет работать с MySQL базок к Clickhouse базе. Поставили ProxySQL, который умеет переписывать синтаксис с MySQL на Clickhouse. Пока что оно заводится, держит connection, и в целом работает.
Столкнулись пока что только с одним косяком - запросы типа
SELECT col1
FROM table
GROUP BY 1
не проходят. Rewrite rules в ProxySQL под такое писать не хотелось бы, потому что жесть. Есть ли в обозримом будущем в Clickhouse базе планы на поддержку GROUP BY 1,2 / ORDER BY 1,2 запросов?
Да, это обязательно будет. Более того, реализация очень простая и, по большей части, сделана. Сейчас основная проблема - не усложнять достаточно громоздкий код анализа запроса (ExpressionAnalyzer), а вместо этого разделить его на мелкие куски. Поэтому мы пока не спешим добавлять эту функциональность прямо сейчас.

Google

Diomid
04.07.2018
19:22:23

Kirill
04.07.2018
19:22:32

antuan
04.07.2018
19:24:38

Alexey
04.07.2018
19:25:08
час поработал после рестарта, опять память выжрал и тормозит
По нашему опыту проблем с потреблением памяти на версии 54385 не было. Тем не менее, надо изучить причину - попробовать старую версию (для быстрых экспериментов можно просто stop, cp бинарника, start). Потом изучить, что влияет. Могут влиять некоторые виды SELECT-запросов, а могут влиять большие INSERT-ы или наоборот, большое количество мелких INSERT-ов. Для того, чтобы это проверить, отключите часть нагрузки на одном из серверов.


Kirill
04.07.2018
19:27:19
В любом случае в этом направлении нужно идти, как пример в КХ нет подготовленных выражений и это сильно местами афектит, взять хотя бы cached словари которые в ряде случаев просто генерят "портянку" SQL который не пролезает по дефолтовым лимитам. Да и вообще с подготовленными запросами может быть сильно больше оптимизаций (а тут уже вышеупомянутый ExpressionAnalyzer:))

Alexey
04.07.2018
19:39:14


Kirill
04.07.2018
19:46:24

Alexey
04.07.2018
19:46:52

Kirill
04.07.2018
19:49:00
Старая версия - в которой даже нет таких настроек?
Не думаю что настолько сильно, сейчас нет доступа к серверам, 543* скорее всего, но, мы храним много данных в массивах ***Map и если не выставляться по блокам - мы сильно страдаем при переливе insert select, а такое бывает
страдаем так что пару дней назад я реально скрещивал пальци чтоб 128 gb хватило, и он дошол до 120 и OOM его не прибил

Evgeny
04.07.2018
19:50:44
Скажите, а как можно инициировать обновление mongo словаря? Есть SQL какой-то для этого?

Kirill
04.07.2018
19:51:38

Evgeny
04.07.2018
19:52:10
Спасибо!

Kirill
04.07.2018
19:53:43
И при мержах/ переливе данных там сейчас все страшно, мы решим - не сильно страшная вещь )

Alexey
04.07.2018
19:56:08

Kirill
04.07.2018
19:57:34

Google

Kirill
04.07.2018
19:58:33
Это для группировки в тот самый массив **Map
Мы просто на такое сильно не закладывались, такие вещи нужно хранить не так

Alexey
04.07.2018
20:04:18
Да, для больших значений - больших массивов, тяжёлых состояний агрегатных функций, требуются некоторые доработки - это адаптивный выбор index_granularity и max_block_size.

Kirill
04.07.2018
20:09:15
Да, для больших значений - больших массивов, тяжёлых состояний агрегатных функций, требуются некоторые доработки - это адаптивный выбор index_granularity и max_block_size.
К сожаленюю я это тоже знаю и нам вот сильно в этом месте нехватает адаптивного index_granularity, сейчас чтоб сильно не афектить всех он сильно маленький, но он нужен не всем. Еще беда в том что в КХ нет транзакций и мы считаем стату в отдельных таблицах, но когда все это копировалось пришел OOM и все убил - как результыт куда-то что-то приехало, а куда-то нет. Может есть смысл расмотреть транзакции, как в том же посгреме (min/max видимости), но не на уровне строк (в КХ это бесполезно), а блоков ?
И, это был последний день месяца и соответственно чтоб порешать нужно было перелить месяц

Alexey
04.07.2018
20:11:00

Kirill
04.07.2018
20:13:13

Alexey
04.07.2018
20:14:08

Kirill
04.07.2018
20:14:58
Да, это факт, тут как бы сильно много проблем
@milovidov_an Еще о "боли" у нас "старенький" КХ и freeze partition не работают по префиксу с кастомными партициями. Но у нас больше чем одна таблица и хотелось бы freeze tables a,b,c partition 201805 или freeze a,b,c 2018 - мы сами можем добавить, нужно только синтаксис утвердить и, наверное, складывать не в increment, а от даты + какой-то постфикс

Mike
04.07.2018
20:27:29

Alexey
04.07.2018
20:28:42

Kirill
04.07.2018
20:33:43

Bogdans
05.07.2018
07:28:46

Alexander
05.07.2018
07:32:49

dm
05.07.2018
09:05:41
привет. как вы бэкапите кликхаус? по одной табличке, делаете alter ... freeze, или есть менее замороченные методы?

Mikhail
05.07.2018
09:05:58
Подскажите, чем можно посмотрить логи запросов в clickhouse?
Интересует какие запросы приходили от клиентов.

Alexander
05.07.2018
09:08:28

Mikhail
05.07.2018
09:11:12

Google

Jury
05.07.2018
10:40:20
Всем доброго дня!
хочу использовать в одном SELECT одну и ту же колонку дважды, конечно под разными алиасами, например так:
select a as a1, function(a) as a2 from ....
но не получается, и в a1 и в a2 оказываются результаты выполнения function(a), а как правильно?

Konstantin
05.07.2018
10:44:07

Jury
05.07.2018
10:44:54
ну у меня там строки лога, и во второй колонке будут результаты обработки этой строки... и хотелось видеть и raw-строку, и обработанную

Tima
05.07.2018
10:45:31

Alex
05.07.2018
10:45:44

Konstantin
05.07.2018
10:45:57

Jury
05.07.2018
10:46:21
всем спасибо

papa
05.07.2018
10:54:04
делать можно, но работать будет не так как обычно.

Jury
05.07.2018
10:56:47
ну да, что и получилось

Denis
05.07.2018
11:02:06
кто-нибудь с таким сталкивался?
[63/868] Building CXX object dbms/CMakeFiles/dbms.dir/src/Dictionaries/CacheDictionary.cpp.o
FAILED: dbms/CMakeFiles/dbms.dir/src/Dictionaries/CacheDictionary.cpp.o
/usr/bin/g++-7 <params> -c ../dbms/src/Dictionaries/CacheDictionary.cpp
{standard input}: Assembler messages:
{standard input}:212615: Warning: end of file not at end of a line; newline inserted
{standard input}: Error: open CFI at the end of file; missing .cfi_endproc directive
g++-7: internal compiler error: Killed (program cc1plus)
это при билде из исходников после запуска ninja

Evgeny
05.07.2018
11:39:24
Подскажите плз - max_bytes_before_external_group_by и max_bytes_before_external_sort работают? Я делаю запрос с жирным groupby, который валится по отсутствию памяти, но выставление max_bytes_before_external_group_by не помогает (и в system.settings я его не вижу)

Denis
05.07.2018
12:02:15

Diomid
05.07.2018
12:02:47

Evgeny
05.07.2018
12:02:51
А как тогда правильно из применить к таблице?

Google

Denis
05.07.2018
12:03:19

Diomid
05.07.2018
12:04:04

Denis
05.07.2018
12:04:24

Evgeny
05.07.2018
12:12:46

Дмитрий
05.07.2018
12:18:02
господа вопрос а как можно узнать сколько RAM съела engine=Memory()

Denis
05.07.2018
12:37:24

Stanislav
05.07.2018
12:47:22
Господа, есть табличка соответствий число-строка. Общее количество порядка 30 штук. Сия табличка будет использоваться в десятке-другом запросов. Как правильнее сделать применение сего соответствия в паре десятков запросов? Таки словарь? Если да, то печально - хотел дать возможность поредактировать табличку человеку с r/o правами.

Denis
05.07.2018
12:50:28
как же он будет редактировать с р/о правами? если словарь будет внешний, например монго, а у оператора будут права на соответсвующую запись в монго, то он может править там. а потом настроить возможность релоада в кх по запросу.

Stanislav
05.07.2018
12:50:49
r/o - в кликхаусе и других БД.
Меняться будет в любом случае не чаще раза в месяц, так что проще попросить перечитать с бОльшими правами.

Denis
05.07.2018
12:52:06
вот в варианте со внешним словарём, в кх у него р/о, а в словаре будут права. или напрямую таблицу в кх завести. я что-то не вижу проблемы таблицу из 30 записей заджойнить. кх её должен в памяти держать.