
Александр
30.08.2017
14:46:38
Мы собственно хотим использовать КХ именно по назначению - агрегировать данные БЫСТРО и получать нужные отчеты БЫСТРО, с чем он замечательно справляется )

Dmitry
30.08.2017
14:47:11
@milovidov_an Алексей, а подскажите, есть у вас отзывы по работе кх в kubernetes?

Alexey
30.08.2017
14:47:12
Кликхаус умеет работать со статическими huge pages? (2m/1g)
Не умеет. Были эксперименты с huge pages. Статические не использовали, так как их сложно настраивать. (Transparent huge pages давали прирост производительности в некоторых случаях, но через несколько дней система деградировала из-за особенностей их аллокации.)

Google

Alexey
30.08.2017
14:49:12
Только прогресс бар в заголовках X-ClickHouse-Progress.

Maksim
30.08.2017
14:50:10
X-ClickHouse-Progress очень круто, спасибо
мы сохраняем ID запроса на промежуточном сервере и потом опрашиваем его
в итоге рисуем пользователю проценты
очень довольны

Alexey
30.08.2017
14:51:05

Vladislav
30.08.2017
14:51:48

Alexey
30.08.2017
14:53:49

Kirill
30.08.2017
14:55:28
Спасибо

Evgeniy
30.08.2017
14:58:52

Alexey
30.08.2017
14:59:28


Mike
30.08.2017
15:01:04
подскажите пожалуйста. Я хочу сгруппировать сессии по их длительностям. Сейчас вырисовывается такая конструкция: if(duration < 30, 30, if(duration < 120, 120, if(duration < 360, 360, if(duration < 3600, 3600, if(..... if(duration < 86400, 86400, 90000)....)))
Есть специальная функция roundDuration(num): "This function is specific to Yandex.Metrica and used for implementing the report on session length."
Иногда полезно обращаться к документации.

Alexey
30.08.2017
15:01:10

Google

Александр
30.08.2017
15:02:18

Maksim
30.08.2017
15:02:28

Alexey
30.08.2017
15:02:51
подскажите пожалуйста. Я хочу сгруппировать сессии по их длительностям. Сейчас вырисовывается такая конструкция: if(duration < 30, 30, if(duration < 120, 120, if(duration < 360, 360, if(duration < 3600, 3600, if(..... if(duration < 86400, 86400, 90000)....)))
Более менее, хотя есть более удобный CASE WHEN ... THEN ... для таких цепочек.

Maksim
30.08.2017
15:04:11
да вот roundDuration или roundExp2 почти что нужно

Alexey
30.08.2017
15:04:29

Maksim
30.08.2017
15:04:37
ага, мне уже ткнули

Vladislav
30.08.2017
15:06:00
Всем привет.
Столкнулись с проблемой, у нас почему-то на одном проекте начали виснуть запросы select distinct.
Запрос выполняется, выдает пару значения и зависает.

Alexey
30.08.2017
15:06:49


Vladislav
30.08.2017
15:07:06
Что интересно, на этом сервере 2 проекта, с аналогичными табличками, на первом данных прям очень много, и этот запрос отрабатывает нормально, на втором всего 20м и запросы стабильно виснут.
Если запрос не кильнуть, он может висеть неделями

Alexey
30.08.2017
15:07:48

Александр
30.08.2017
15:10:22


Alexey
30.08.2017
15:10:28
Если запрос не кильнуть, он может висеть неделями
А есть ли возможность посмотреть, что в это время происходит на сервере?
top -d0.5 - смотрим, использует ли clickhouse-server CPU.
dstat - диск, сеть.
iostat -dmx 1 - диск.
sudo perf top - в каких функциях тратится CPU.

Vladislav
30.08.2017
15:11:14
Сек. Призываем devops

Alexey
30.08.2017
15:13:28
Тут есть проблемка :) У нас иногда меняются переменные для подсчета фактов. Даже не знаю какой пример привести...вобщем мы можем поправить например алгоритм подсчета времени которое пользователь провел в сущности. У нас есть поток событий типа: вошел в сущность, вышел из сущности. Потоки не всегда целостные, например есть 10 входов подряд, а выхода нет. Или например вход был 1 числа, а выход 15 числа и т.д. и мы применяем различные правила для таймаутов, фрода и пр. И получается, что после смены алгоритма система думает, что пользователь провел в сущности не 10 минут, а 15 или вообще 5.
Понятно. Это сложнее... Как будто надо какие-то custom агрегатные функции делать внутри ClickHouse, которые могли бы учесть особенности этих алгоритмов... либо просто читать данные в свой скрипт, который их обрабатывает. Это уже весьма неэффективно.


Александр
30.08.2017
15:14:00
Можно конечно замудриться с replacing merge tree и сделать идентификаторы сессий и по ним обновлять данные, но может получиться так, что вместо 10 сессий будет 5 из-за увеличения таймаута. Таймауты меняются в зависимости от среднего времени нахождения в сущности ) И разным сущностям могут применяться разные таймауты (этого пока нет, но будет).

Google

Александр
30.08.2017
15:14:43

Alexey
30.08.2017
15:18:29
Версия 1.1.54284 опубликована.

Александр
30.08.2017
15:19:29
Но вот сегодня весь день собираю прототип этого добра на CH. Есть кейс. Есть база обучающихся с фактами, есть факт "Территориальный банк". Есть пользователи системы аналитики. Каждому пользователю назначаются "фильтры", что бы они могли видеть данные по обучающимся только своего территориального банка. Есть суррогатный факт (то, что мы считаем налету) для курса - кол-во учащихся. И вот это кол-во учащихся должно фильтроваться по териториальному банку :) Вобщем кейсы очень интересные встречаются.

Tw1ce
30.08.2017
15:21:08

GithubReleases
30.08.2017
15:25:04
https://github.com/yandex/ClickHouse/releases/v1.1.54284-stable was tagged

Tw1ce
30.08.2017
15:33:12
Хотя ядро в 100 уходит, на каждый такой висячий запрос, в обычном состоянии такого не наблюдается, по диску с сетью все хорошо

Vladislav
30.08.2017
15:39:59

Tw1ce
30.08.2017
15:40:27
Это perf top
В момент когда все 8 ядер в 100 ушли
Сделали ровно 8 висячих запросов

Vladislav
30.08.2017
15:43:57

Alexey
30.08.2017
16:08:12
А это скриншот запроса, который виснет, или нормального?

Alexander
30.08.2017
16:29:49
Подскажите пожалуйста ссылку на сравнение производительности клик-хаус на open-shift (или виртуальный) и железе. Не могу найти.

Alexey
30.08.2017
16:36:57
На Openstack?

Tw1ce
30.08.2017
16:37:42

Alexander
30.08.2017
16:38:07
Вроде да, не помню точно.

Alexey
30.08.2017
16:38:47

Alexander
30.08.2017
16:38:58
Спасибо. Оно.

Alexey
30.08.2017
16:39:06
Там сравнение некоторого железа с некоторыми виртуалками в Amazon.

Google

Vladislav
30.08.2017
16:40:42
Прогресс бар моментально доходит до 98%
и потом вообще ничего не приходит
Даже стрелочка слева не крутится

Alexey
30.08.2017
17:41:04
Понятно. Есть подозрение на одно из изменений, которое у нас было.
Для начала стоит проверить, что это никак не связано с DISTINCT. Если убрать DISTINCT, то тоже виснет?

Vladislav
30.08.2017
17:57:18
без distinct тоже самое
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
│ test5 │
└────────┘
↘ Progress: 20.77 million rows, 405.58 MB (117.44 million rows/s., 2.29 GB/s.) 98%

Alexey
30.08.2017
18:00:18
Понятно. Сейчас напишу в личку, как мы можем разобраться.

Igor
30.08.2017
20:33:26
Подскажите, а как то можно обезопасить INSERT...SELECT
Если сделать запрос
CREATE table default.x1 (
x1 Float64,
x2 Float64,
x3 Float64
) ENGINE = TinyLog
;;
INSERT INTO default.x1
SELECT 0.1 as x1,0.3 as x3,0.2 as x2
;;
SELECT * FROM default.x1
Получается я ожидал
0.3 в X3
0.2 в X2
А получил :
`| x1 | x2 | x3 |
| 0.1 | 0.3 | 0.2 |`
И мне кажется до релиза 1.1.54245 было другое поведени CH

Alexey
30.08.2017
20:42:02
Да, мы это меняли, хотя уже довольно давно - несколько релизов назад.
Новое поведение больше соответствует стандарту - соответствие столбцов при INSERT SELECT определяется только позициями.

Igor
30.08.2017
20:43:27
Ух... печаль тостка... жаль нет переключателя ((((
У меня просто insert select ручные по 100 колонок, и я понял что в одно ошибся местами x88 и x87 и оба float )

Alexey
30.08.2017
20:45:52
Понимаю. Да, это проблема.

Igor
30.08.2017
20:53:11
Понимаю. Да, это проблема.
А теоритически - если поставить issue на возможность сделать _переключатель_ - не соответствоать стандарту - можно ожидать появления ?

Alexey
30.08.2017
20:53:53
Да, можно. Сейчас вспомню, насколько это сложно...
Это не очень сложная задача.

Igor
30.08.2017
20:59:59
Спасибо! Поставлю, буду ждать появления фичи - просто потратил очень много сил на ошибку после обновления CH )))

Александр
30.08.2017
21:19:39
А если в select секции и where секции использутся dictGetString(...), т.е. делается фильтр и выборка параметра из справочника, то обращение к справочнику будет один раз или два? Есть смысл как то костылять типа select dictGetString(...) as paramName ... where paramName = 'paramValue'?

Alexey
30.08.2017
21:20:31
Один раз. Все одинаковые выражения в запросе вычисляются единожды.

Александр
30.08.2017
21:21:08
О! Супер! ) Спасибо за ответ!

Andrey
31.08.2017
08:01:44
Всем привет. Есть ли какие-то оганичения по количеству возвращаемых строк через HTTP для пользователя readonly? У пользоваетля квота - default, она вроде не имеет ограничений из коробки. Пытаюсь в табло через веб конектор выгрузить миллион записей. Сто тысяч получается выгружать

Google

sic transit
31.08.2017
08:07:18

Александр
31.08.2017
08:10:58
Я думаю везде строки :)

sic transit
31.08.2017
08:11:27

Александр
31.08.2017
08:11:44
Ну ладно ) В Монге документы

sic transit
31.08.2017
08:12:08
Ну ладно ) В Монге документы
В любой RDBMS записи - records. В монге, да. Наверное здесь действительно такая терминология. Не вникал еще в КХ.

Igor
31.08.2017
08:12:59

Александр
31.08.2017
08:16:57
RDBMS Terminology:
...
Row: A row (= tuple, entry or record) is a group of related data, for example the data of one subscription.
...
https://en.wikipedia.org/wiki/Relational_database#Terminology
Не нашел ничего о record

sic transit
31.08.2017
08:18:21

Tima
31.08.2017
08:19:00

Александр
31.08.2017
08:19:02
Но прошу заметить, что это используется как синоним, а основной термин все таки Row во многих источниках

sic transit
31.08.2017
08:19:17

Александр
31.08.2017
08:19:36