@clickhouse_ru

Страница 285 из 723
Oleh
12.10.2017
12:50:24
не нашел такого в документации, сейчас попробую

unknown JOIN strictness (must be ANY or ALL)

Alexey
12.10.2017
12:52:18
Алексей, а еще BI-системы рассматриваете для взаимодействия? Если да, то какие в ближайших планах?
Пока больше никакие. Надо выяснить, что следующее самое востребованное. Сейчас для Tableau у нас поддержка на уровне "начало работать".

Google
Alexey
12.10.2017
12:55:01
Привет всем! Подскажите как можно результат вывода FORMAT JSON вернуть в select. примерно так select s from (select .... FORMAT JSON) as s;
Взять отформатированный результат запроса как строку и использовать эту строку в другом запросе - средствами SQL никак нельзя.

Mike
12.10.2017
12:55:13
Будем надеяться, что отсутствие поддержки subqueries во view временное.
Алексей, а поддержку SELECT db.table.column из роадмапа в этом году ждать можно? Теоретически, тогда еще и Pentaho заработает полноценно. Вчера с последний jdbc драйвером ее мучал, валится именно на этом

Mike
12.10.2017
12:57:57
Оно уже есть, но в ограниченном виде. При наличии JOIN, работает только для левой таблицы.
Спасибо за информацию. Жаль, пентаха сама все sql запросы строит и как-то направить ее на путь истинный нельзя :(

vladimir
12.10.2017
12:58:33
Алексей, в КХ нет никаких встроенных способов выполнять сложные запросы в несколько потоков? Возможно оно из коробки умеет дробить запрос на N подзапросов и выполнять их параллельно. а результат склевивать?

vladimir
12.10.2017
12:59:40
а можно как то регулировать количество этих потоков?

Alexey
12.10.2017
12:59:43
а можно как то регулировать количество этих потоков?
Настройка max_threads. По-умолчанию auto - выбирать оптимальное количество потоков. Можно выставить в любое число.

Google
Oleh
12.10.2017
13:08:29
ANY FULL OUTER JOIN
спасибо!

Mike
12.10.2017
13:08:59
Можете привести пример? Простые запросы уже должны обрабатываться нормально.
https://pastebin.com/TiYvChmv тут действительно не db.table.column , а в каких-то условаиях не видит table.column. Структура таблиц == копия из pgsql и там все отрабатыает (на случай вопросов - а есть ли там такие поля)

Igor
12.10.2017
13:11:25
Всем привет. Столкнулись с проблемой подвисших на сервере запросов. Проявляется когда накидываем кучу запросов на одну машину в кластере - в какой-то момент достигаем лимита на количество одновременно выполняющихся запросов, часть из них начинает отваливаться И вот часть из отвалившихся запросов остаётся висеть в system.processes. gdb и код кликхауза помогли найти место, где происходит что-то плохое: #0 pthread_cond_wait@@GLIBC_2.3.2 () at ../sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S:185 #1 0x0000000003f6363b in Poco::SemaphoreImpl::waitImpl() () #2 0x00000000034896e2 in DB::UnionBlockInputStream<(DB::StreamUnionMode)0>::finalize() () #3 0x000000000348a68a in DB::UnionBlockInputStream<(DB::StreamUnionMode)0>::~UnionBlockInputStream() () ... Судя по тому, что в коде UnionBlockInputStream перед вечным локом есть намёк на print-debugging //std::cerr « "popping\n"; output_queue.pop(res); , проблема известная. Можете посоветовать как избавиться от подобного?
Увидели, что в одном из последних релизов пофиксили дедлок, обновили кликхаус, но проблема осталась. Никто больше не сталкивался с этой багой?

Alexey
12.10.2017
13:27:43
Привет!

Ты тут?

Вопрос про треды актуален

Я выставил 58 тредов и запустил выполнение тяжелого запроса, он выполнился за 22сек. изменид количество тредов на 14, запустил этот же запрос отработал за 23 сек

Тут.

Сейчас отвечу в общем чате.

По-умолчанию количество потоков выбирается как количество ядер без учёта hyper-threading. Для большинства запросов это предел, после которого увеличение количества потоков даёт лишь небольшой прирост. Можно посмотреть текущее значение настройки в таблице system.settings.

https://www.percona.com/blog/2017/09/13/massive-parallel-log-processing-clickhouse/

Увидели, что в одном из последних релизов пофиксили дедлок, обновили кликхаус, но проблема осталась. Никто больше не сталкивался с этой багой?
В последнем релизе 54292 - не сталкивались. А какой именно дедлок? Для разбирательства важны следующие подробности: 1. Как это выглядить с вашей стороны. 2. Стек трейс всех потоков: sudo gdb -batch -ex 't apply all bt' -p $(pidof clickhouse-server) во время блокировки. Пишите на gist или pastebin.

vladimir
12.10.2017
13:37:25
Алексей, у меня 28 ядер + 28 гипертрейдинг ( количество тредов по умолчанию в базе 28). При выставлении количества тредов 14/58 запросы отрабатывают так же как и при 28 тредах. Общая нагрузка на CPU на данный момент ~15%.

а я хочу нагрузку в 90% на CPU

но чтобы запросы отрабатывали не за 22сек а за 4

мне поднимать несколько инстансов КХ в контейнерах на одном сервере, бить данные на шарды и гонять все запросы через подобный кластер?

Amelia
12.10.2017
13:49:58
Alexey
12.10.2017
13:50:05
Оптимально должно быть примерно при 28 ядрах. Запрос может масштабироваться менее чем линейно, если: - большая часть времени уходит на передачу данных по сети; - большая часть времени уходит на сортировку (которая плохо масштабируется). - создание хэш-таблиц в IN или JOIN (их создание всегда делается в один поток, хотя последующее выполнение JOIN/фильтрации распараллеливается) Чтобы выяснить, что именно плохо распараллеливается, можно понаблюдать, что именно делает запрос в те моменты времени, когда он использует не всё CPU. Несколько шардов ClickHouse на одном сервере - не поможет, но может помешать, так как взаимодействие между шардами всегда более тяжёлое, чем внутри процесса.

vladimir
12.10.2017
14:07:42
Алексей, у нас "тяжелый запрос" это 970 значений которые передаются в IN

Google
vladimir
12.10.2017
14:09:43
и это как бы совсем не много чтобы КХ думал над ним 22сек

papa
12.10.2017
14:11:51
Алексей, у нас "тяжелый запрос" это 970 значений которые передаются в IN
это не только 970 значений, но и схема базы, количество строк, количество столбцов, их размер, итд.

Igor
12.10.2017
14:16:31
В последнем релизе 54292 - не сталкивались. А какой именно дедлок? Для разбирательства важны следующие подробности: 1. Как это выглядить с вашей стороны. 2. Стек трейс всех потоков: sudo gdb -batch -ex 't apply all bt' -p $(pidof clickhouse-server) во время блокировки. Пишите на gist или pastebin.
1. Есть кластер из 20 шардов. У каждого шарда есть реплика, лежит на следующей ноде. Когда засылаем одновременно кучу запросов (150 запросов в секунду достаточно) на distributed таблицу (шарды ReplicatedReplacingMergeTree) на какую-то одну ноду, получаем на этой ноде подвисшие подзапросы к конкретной таблице с данными. Т.е. эти запросы навсегда поселяются в system.processes При этом кликхаус продолжает нормально работать. Но если попытаться убить зависший запрос, то сервер встаёт намертво, любой новый запрос виснет. 2. bactrace до kill query: https://gist.github.com/sfod/4820270e8060fe7741366ec54f3cae3a backtrace после kill query: https://gist.github.com/sfod/e0eef68aa69b138dc0353a138c87727c

Igor
12.10.2017
14:56:46
Спасибо, попробуем раскопать.
Если нужны будут ещё данные, пишите. Спасибо!

Sergei
12.10.2017
15:07:40
Подскажите пожалуйста, вложенный запрос типа SELECT a, b from ( SELECT a, b FROM t) всегда в памяти будет лежать или КХ умеет такие в складывать во временные файлы?

Irina
12.10.2017
15:12:16
Подскажите, пожалуйста, по внутренним словарям. Хочу подключить гео базу, но информации о континентах и федеральных округах нет. Можно ли пропустить эти типы регионов при создании иерархий?

Решился вопрос, спасибо

Sergei
12.10.2017
17:21:13
Такой запрос будет выполнен с потоковой отправкой данных на клиента - будет израсходовано O(1) памяти.
Добрый вечер вот сделал небольшой синтетический тест, т.к. нужно посчитать последовательности подряд идущих событий, но обнаружилась одна неприятная вещь. КХ хочет 34G на выполнение запроса, которому ну 10М должно хватать заглаза. SELECT z.2 AS strike, count(*) AS count FROM (SELECT arrayPopFront(arrayMap((a, b) -> (a.1, a.2 - t[(b - 1)].2), arrayPushFront(arrayFilter(t -> (t.2 != 0), arrayMap((a, b) -> if(a != x[(b + 1)], (a, b), (0, 0)), x, arrayEnumerate(x))), (0, toUInt32(0))) AS t, arrayEnumerate(t))) AS z from (select arrayMap(a -> intHash32(a) % 2, range(150000)) as x)) ARRAY JOIN z GROUP BY z.2 такое ощущение, что на вызов каждой лямбды создается копия массива

Konstantin
12.10.2017
17:42:01


а такой запрос: select userid, UUIDStringToNum(userid) from stat.stream_log limit 1000 вообще чудеса делает: ":) PuTTYPuTTYPuTTYPuTTYSegmentation fault"

Michal
12.10.2017
17:47:16
https://twitter.com/ClickHouseDB/status/918499427597332481
Спасибо. А будет видео?

Alexey
12.10.2017
17:56:48
Добрый вечер вот сделал небольшой синтетический тест, т.к. нужно посчитать последовательности подряд идущих событий, но обнаружилась одна неприятная вещь. КХ хочет 34G на выполнение запроса, которому ну 10М должно хватать заглаза. SELECT z.2 AS strike, count(*) AS count FROM (SELECT arrayPopFront(arrayMap((a, b) -> (a.1, a.2 - t[(b - 1)].2), arrayPushFront(arrayFilter(t -> (t.2 != 0), arrayMap((a, b) -> if(a != x[(b + 1)], (a, b), (0, 0)), x, arrayEnumerate(x))), (0, toUInt32(0))) AS t, arrayEnumerate(t))) AS z from (select arrayMap(a -> intHash32(a) % 2, range(150000)) as x)) ARRAY JOIN z GROUP BY z.2 такое ощущение, что на вызов каждой лямбды создается копия массива
А вот этот запрос уже не будет выполняться потоково. Функции высшего порядка размножают значения по количеству элементов массива, и в результате в оперативке получаются блоки большого размера. Попробуйте две вещи: 1. Уменьшить max_block_size. По-умолчанию значение 65536, соответсвенно, постепенно пробуйте значения 8192, 1024 и т. п. 2. Если же оперативки не хватает при GROUP BY, то можете включить агрегацию во внешней памяти.

Это нормально. После преобразования в бинарный вид, получаются какие-то байты, которые плохо отображаются в терминале. Для чтения глазами этот бинарный вид плохо подходит.

Alexey
12.10.2017
17:58:12
Google
Konstantin
12.10.2017
17:58:34
спасибо)

Alexey
12.10.2017
17:58:48
Спасибо. А будет видео?
Видео будет в течение пары недель - смонтируем, отсмотрим.

Alexey
12.10.2017
18:03:17
В запросе есть GROUP BY, поэтому он не выполняется потоково - создаются промежуточные состояния для GROUP BY. Хотя я не разглядывал ваш запрос подробнее, поэтому про всякие операции с массивами не могу прокомментировать.

Dmitriy
12.10.2017
18:15:54


Извените не удержался)

Paul
12.10.2017
18:18:33
только в России могут сделать онлайн-ассистента, который острить учится раньше, чем заводить будильник

Konstantin
12.10.2017
18:47:52
пытаюсь в Power BI черед ODBC сделать запрос, ровно через 30 секунд вылетает timeout



при этом в браузере запрос выполняется нормально

можно както повлиять на этот таймаут со стороны КХ или это проблема драйвера и power bi?

Alexey
12.10.2017
19:15:03
можно както повлиять на этот таймаут со стороны КХ или это проблема драйвера и power bi?
Я сомневаюсь, что запрос доходит до ClickHouse. Можно посмотреть в логе.

В самом ClickHouse таймаут на сетевое взаимодействие по-умолчанию 5 минут. Конечно можно подкрутить, но это не имеет отношения к делу.

Konstantin
12.10.2017
19:16:13
Я сомневаюсь, что запрос доходит до ClickHouse. Можно посмотреть в логе.
доходит, я по логу и вижу что когда elapsed=30 выскакивает такая штука в power bi, запросы с меньшем временем ожидания выполняются и отдаются в power bi корректно

точнее не по логу а по show processlist

Andrey
12.10.2017
19:17:03
А это не самого powerbi таймаут?

Konstantin
12.10.2017
19:17:50
вот хз, когда к mysql обращаюсь вроде нет такого ограничения

Alexey
12.10.2017
19:20:14
Надо ещё посмотреть на наличие таймаута в коде ODBC драйвера.

Konstantin
12.10.2017
19:21:35


Google
Nikolai
12.10.2017
19:27:44
очень похоже :)

Alexey
12.10.2017
19:43:50
Да. Напишите разработчику в issues, что таймаут должен быть настраиваемым.

Konstantin
12.10.2017
19:47:06
Уже

Igor
12.10.2017
22:40:20
Обновил beta.tabix.io Кто может, и кто испытывает проблемы - погоняйте|по тестируйте - на тормоза и мемлики) Бонус : plotly добавил 3D https://twitter.com/tabix_io/status/918606140027654144?s=17

Changelog: https://github.com/smi2/tabix.ui/blob/beta/manual/docs/Changelog.md PlotLy example: https://github.com/smi2/tabix.ui/blob/beta/manual/docs/draw/Draw_Plotly.md

Алексей
13.10.2017
06:38:02
день добрый! подскажите, пожалуйста, есть ли более подробное описание функций для работы с временем/датами? в текущей версии документации не совсем прозрачно например: https://clickhouse.yandex/docs/ru/functions/date_time_functions.html#totime toTime Переводит дату-с-временем на некоторую фиксированную дату, сохраняя при этом время. что такое "некоторая фиксированная дата"? где и как она устанавливается? toRelativeYearNum Переводит дату-с-временем или дату в номер года, начиная с некоторого фиксированного момента в прошлом. что такое "начиная с некоторого фиксированного момента в прошлом"? что это за момент? как он устанавливается? в чём отличие от просто toYear?

Igor
13.10.2017
06:59:22
не открывается окно ввод sql это норм?)
Логин/Пасс - правильные ? ( есть баг - пропало уведомление об ошибки подключения )

В консоле нет ошибок типа : POST .... net::ERR_CONNECTION_REFUSED

Александр
13.10.2017
07:29:06
Я такое применяю когда у меня есть дата эвента и продолжительность, что бы потом разложить эвент на несколько дней с открытым временем и закрытым, исходя из продолжительности

Алексей
13.10.2017
07:35:27
Ну например у вас есть просто дата, а вам нужен DateTime. Дата останется фиксированной, а время подставится текущее
если это про toTime, то там указано "Переводит дату-с-временем", т.е. требуется именно дата-время ну и SELECT toTime(toDateTime('2017-10-13 00:00:00')) —> 1970-01-02 00:00:00 т.е. такое ощущение, что переводит на начало эпохи, правда, не совсем начало, а второе число...

Konstantin
13.10.2017
07:41:30
SELECT timeSlots(toDateTime('2012-01-01 12:20:00'), 600) Received exception from server: Code: 43. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Illegal type UInt16 of second argument of function timeSlots. Must be UInt32.. Это нормально, что КХ хочет чтобы я второй аргумент дал ему не как 600, а toUInt32(600) ?))

Александр
13.10.2017
07:41:50
Прошу прощения, невнимательно прочитал название функции ( да, toDateTime делает то, что я описал

Страница 285 из 723