
Alex
25.04.2017
15:06:55
Как предположение

Combot
25.04.2017
15:08:29
combot.org/chat/-1001080295593

Dennis
25.04.2017
15:11:13
Алекс, по идее, нет
В этом его сила, что он все хранит на диске и при этом быстрый

Google

Fike
25.04.2017
15:12:43
тогда бы не было ограничения по оперативке на размер результата (стримил бы результаты с диска)
https://github.com/yandex/ClickHouse/blob/master/dbms/src/Interpreters/InterpreterSelectQuery.cpp вообще похоже, что ответы здесь, но я сломался :3

Dennis
25.04.2017
15:31:41
Так ограничение на размер РЕЗУЛЬТАТА, а не ИСХОДНЫХ ДАННЫХ. Т.е. они стримят по диску и в памяти по тихоньку накапливают результат, потом его сортируют, обрезают и выдают

Alexey
25.04.2017
16:56:10

Felixoid
25.04.2017
17:02:54
у нас include не используется, всё в config.d/*.xml
/etc/clickhouse-server/config.d$ grep incl *
/etc/clickhouse-server/config.d$ echo $?
1
оно удобнее управляется, кмк
ну и основной конфиг мы в принципе не трогаем, он всегда из пакета дефолтный

Alex
25.04.2017
17:12:44
Include для случаев, когда хочется явно указать "точки расширения" в общем конфиге. А с помощью файлов в config.d удобно немного подкручивать отдельные настройки. Вообще да, функциональность пересекается.

Andrey
25.04.2017
17:20:20
Ребят, а INTERVAL есть в CH?
Ну типо: date - INTERVAL '1 days'

Igor
25.04.2017
17:21:09
нет
но можно просто дату вычитать-складывать с интом

Google

Igor
25.04.2017
17:21:32
today() - 1 == yesterday(), грубо говоря

Andrey
25.04.2017
17:21:40
Ага, понял, спасибо

Виктор
25.04.2017
17:34:36
Рассказываем про ClickHouse в Кремниевой Долине

Dennis
25.04.2017
17:35:42
Это 5иминутка кейноут?

Dmitry
25.04.2017
17:35:52
Да

Dennis
25.04.2017
17:36:03
Отстрелялся уже??

Dmitry
25.04.2017
17:36:28
На сегодня - да

Dennis
25.04.2017
17:37:00
У вас там еще будут доклады?

Dmitry
25.04.2017
17:37:07
две секции.
Сегодня у Вити и Лёше в общем про кх. И я завтра про графит на кх

Andrey
25.04.2017
17:38:13
а есть трансляция или может записи будут?

Виктор
25.04.2017
17:41:04
Я не очень помню какая у них политика, кажется, только для участников
Но наша будет вводная, примерно как на Highload
А Димина будет про Graphite over ClickHouse

Alexey
25.04.2017
17:42:37
Ну и чтоб закрыть тему с config.xml и иже с ними
как выглядят элементы типа replace или remove?
xml допускает просто указывать типа
<zookeeper replace> ?
как-то выглядит не очень
или я вообще не так понял эту затею?

Google

Alex
25.04.2017
17:53:01
XML так не позволяет - у атрибута должно быть значение. Можно указать например "true". Пример: хочу убрать из дефолтного конфига тег graphite_rollup_example. Для этого нужно создать в config.d/ файл
<yandex>
<graphite_rollup_example remove="true"/>
</yandex>
Проверить себя можно по файлу config-preprocessed.xml - там содержится результат всех подстановок.

papa
25.04.2017
17:56:31
у нас обычно было replace="replace" remove="remove", xhtml-style.

Alexey
25.04.2017
18:13:12
ага, еще раз спасибо

Andrew
26.04.2017
05:43:37
Кто есть в википедии, можете поправить?

Igor
26.04.2017
05:45:23
ты про "результат должен помещаться в оперативке"?

Andrew
26.04.2017
05:45:29
Ага

Igor
26.04.2017
05:45:36
а как это лучше переформулировать?

Slach
26.04.2017
05:46:17
Аггрегацию заменить на join?
И добавить "в некоторых случаях"

Andrew
26.04.2017
05:47:44
+референс на последний Лёшин доклад про group by

Andrey
26.04.2017
05:51:52
Поддерживаю. Как то изначально не совсем верно это подавали. Это же не обязательное условие для работы CH. Просто так будет работать быстрее всего.

Иван
26.04.2017
06:42:14
А скиньте пожалуйста ссылку на последний митап

Kirill
26.04.2017
06:45:55
про group by https://www.youtube.com/watch?v=F-o-a00R4fc

Иван
26.04.2017
06:57:13
Спасибо


Andrey
26.04.2017
10:54:47
Всем привет.
Запускаю достаточно сложный запрос, с множеством подзапросов. CH падает, в ERR логе такие сообщения:
2017.04.26 13:52:39.817847 [ 81 ] <Error> BaseDaemon: ########################################
2017.04.26 13:52:39.817897 [ 81 ] <Error> BaseDaemon: (from thread 16) Received signal Segmentation fault (11).
2017.04.26 13:52:39.817912 [ 81 ] <Error> BaseDaemon: Address: NULL pointer.
2017.04.26 13:52:39.820478 [ 81 ] <Error> BaseDaemon: 1. clickhouse-server(DB::FunctionMultiIf::performTrivialCase(DB::Block&, std::vector<unsigned long, std::allocator<unsigned long> > const&, unsigned long, DB::Conditional::NullMapBuilder&)+0x499) [0x25f2a69]
2017.04.26 13:52:39.820498 [ 81 ] <Error> BaseDaemon: 2. clickhouse-server(Poco::ThreadImpl::runnableEntry(void*)+0xa5) [0x33fb245]
2017.04.26 13:52:39.820514 [ 81 ] <Error> BaseDaemon: 3. /lib/x86_64-linux-gnu/libpthread.so.0(+0x76ba) [0x7f08474ea6ba]
2017.04.26 13:52:39.820529 [ 81 ] <Error> BaseDaemon: 4. /lib/x86_64-linux-gnu/libc.so.6(clone+0x6d) [0x7f0846b0b82d]


Konstantin
26.04.2017
10:56:14
беда

Andrey
26.04.2017
10:56:28
В какую сторону смотреть? Последние данные из PROCESSLIST: memory_usage: 1.29 GiB из доступных 80 гб

Google

Vitaliy
26.04.2017
11:11:27


Ilya
26.04.2017
11:12:27
вопрос - можно как-нибудь в КХ объединить 2 массива в один? так чтобы в результирующем массиве были не два исходных массива, а все значения из исходных массивов? в доке не нашел

Andrey
26.04.2017
11:24:54

Vladimir
26.04.2017
11:30:19

Vladimir
26.04.2017
11:32:12
Очень просто.
SELECT groupArrayArrayArray([a, b])
FROM
(
SELECT
[1, 2, 3] AS a,
[10, 20, 30] AS b
)
┌─groupArrayArrayArray(array(a, b))─┐
│ [1,2,3,10,20,30] │
└───────────────────────────────────┘

Ilya
26.04.2017
11:51:16
это агрегатная функция, да; а если нужно просто объединить два столбца в выборке без агрегации?

Vladimir
26.04.2017
11:55:32

Ilya
26.04.2017
11:57:54

Vladimir
26.04.2017
11:58:16

Ilya
26.04.2017
11:58:37
тем что результатом будет массив массивов, а не массив значений
нужна либо "распаковка" массивов, либо "склейка" массивов

Vladimir
26.04.2017
11:59:55
Ещё можно вот так: SELECT arrayReduce('groupArrayArray', [[1, 2, 3], [10, 20, 30]]).

Ilya
26.04.2017
12:00:58
спасибо!
проверил на своих данных - похоже делает ровно то что нужно

Vladimir
26.04.2017
12:02:23
Главное нужно четко понимать, как тот или иной способ работает, и его ограничения; это может быть не для всех доступно)
Иногда сам просто не додумаешься до таких способов, которые приведены в докладе
Особенно порадовала черная и белая "магия" и самодельное "взешенное сэмплирование")

Google

Ilya
26.04.2017
12:05:34
по поводу arrayReduce - что-то он никак не представлен в доке по кликхаусу, одно вхождение и то мельком в рамках arrayUniq
не удивительно что я не нашел :(

Vladimir
26.04.2017
13:01:05
А вот вопрос, связанный с этим докладом, кстати. Про "волшебные" опции для груп бай всё, вроде, понятно, да и дока есть. Но мне непонятно, почему Memory limit exceeded получается при INSERT-SELECT-е (со *)? Таблицы примерно одинаковые, только ключи разные
Просто, насколько я понимаю, инсерт как работает — собирает блоки со всех distributed-машин, потом они пересортировываются и разбрасываются на все машины (уже по новому ключу). В какой здесь момент вообще может произойти переполнение по памяти, если мы идём линейно по таблице?
Неужели сортировка одного блока может столько занять? Или там сначала собирается вся колонка, и сортируется она?
Да там, в принципе, даже и ключи могут быть одинаковыми, это ни на что не влияет: всё равно валится по памяти. Странно

Maksim
26.04.2017
15:47:29
Добрый день, понимаю вопрос может не по теме. может просто у кого-то получилось Graphite и Grafan скрестить

Vladimir
26.04.2017
15:51:28

Maksim
26.04.2017
15:51:47

Vladimir
26.04.2017
15:52:39
именно он)
С этим наверное лучше в https://t.me/metrics_ru но в этом ничего сложного нет )

Maksim
26.04.2017
15:53:00
главное на входе помалится чтобы помогли)) аха
спасибо)

Roman
26.04.2017
15:53:09
или http://docs.grafana.org/features/datasources/graphite/
может я неправильно понял, но графит поддерживается по дефолту в графана

Pavel
26.04.2017
15:54:17
да, так и есть

Vladimir
26.04.2017
15:54:38
Да кэп)

Maksim
26.04.2017
15:55:51

Roman
26.04.2017
15:56:01
да