
Denis
18.07.2018
14:08:35
как-то странно делать батчер для буфера. тогда уж сразу в таблицу сливать. вообще, неожиданное ограничение на вставку по 1 строке в буфер. логично было предположить, что он для того и нужен

Kirill
18.07.2018
14:08:48

Aliaksandr
18.07.2018
14:10:24

Google

Denis
18.07.2018
14:10:58
для клиента изменится - он же будет время на открытие соединений тратить

Aliaksandr
18.07.2018
14:11:53
если клиент не по gprs, то это время будет не заметно на фоне времени выполнения запроса в кликхаусе :)

Dmitry
18.07.2018
14:14:44
А кто формирует блоки "3 до 300 строк"? Может там стоит сделать батчинг до 1к и не использовать Buffer вообще? Я выработал правило для КХ (и не только) - делай как можно проще. Если написано в доке что лучше не использовать Buffer, а батчить на стороне приложения - делаю так
Вот мы эту статистику собрали, чтобы понять, писать нам нормальный батчинг или нет.
Поняли, что писать, теперь вопрос - по сколько в кучку их собирать.
Что касается вопроса "кто". У нас есть обработчики статистических событий. Они забирают за раз максимум 1000 этих событий, разбивают по типам, обрабатывают кучку каждого типа. Какого-то типа может оказаться из тысячи - три. Вот и вставится три строки в одном инсёрте.
А ещё 1000 событий может и не быть, обработчик заберёт всего 50, ну и инсёрты окажутся ещё мельче.
Полубатчинг, в общем.


Tima
18.07.2018
14:19:08
Вот мы эту статистику собрали, чтобы понять, писать нам нормальный батчинг или нет.
Поняли, что писать, теперь вопрос - по сколько в кучку их собирать.
Что касается вопроса "кто". У нас есть обработчики статистических событий. Они забирают за раз максимум 1000 этих событий, разбивают по типам, обрабатывают кучку каждого типа. Какого-то типа может оказаться из тысячи - три. Вот и вставится три строки в одном инсёрте.
А ещё 1000 событий может и не быть, обработчик заберёт всего 50, ну и инсёрты окажутся ещё мельче.
Полубатчинг, в общем.
По моему опыту, боятся что в КХ вставится меньше 1к - не нужно. Главное чтобы оно старалось вставлять больше 1к (или больше если нужно). В вашем случае можно сделать так: буферизировать каждый тип сообщения в отдельной очереди (хоть Раббит, хоть где), тогда можно гибко указывать с какой частотой выбирать каждый из типов.
Т.е. если "Какого-то типа может оказаться из тысячи - три" тогда делайте батчин из очереди раз в час (или сколько нужно чтобы накопилось примерно 1к)


Dmitry
18.07.2018
14:22:10
Ага, спасибо! Раз в час нам маловато, сделаем что-то типа "сбрасывать данные, если их 1000 строк, или раз в 15 минут")

Tima
18.07.2018
14:24:07

Denis
18.07.2018
14:27:17
а разные типы событий в одну таблицу пишете? если да, то кидайте их после обработки обратно в очередь, а из очереди пишите специальным сервисом все вместе

Alexey
18.07.2018
14:50:41

Evgeniy
18.07.2018
14:53:31
коллеги, а не появилось какого-то способа добавить поля в SummingMergeTree?

molo4ko
18.07.2018
15:01:14
это баг или фича?

Alexey
18.07.2018
15:12:37

Google

Alexey
18.07.2018
15:13:20

molo4ko
18.07.2018
15:14:03
сейчас постараюсь анонимизировать

Alexey
18.07.2018
15:15:58

Konstantin
18.07.2018
15:16:16
от вас - можно ?
если не трудно, можно мне ее, пожалуйста?

Alexey
18.07.2018
15:16:54
Да. Сейчас найдём...

Sergey
18.07.2018
15:23:07
А верно понимаю, что нативный клиент-серверный протокол публично не документирован и надо смотреть исходники?

Alexey
18.07.2018
15:26:29

Sergey
18.07.2018
15:27:11
Понял, спасибо.

molo4ko
18.07.2018
15:41:17
@milovidov_an ошибка проявляется при загадочных обстоятельствах
можно вам в ЛС написать?

Mikhail
18.07.2018
15:42:32
Привет.
Как можно заставить CH заполнить поля дефолтовыми значениями для старой партиции? Добавили новое поле, его дефолт зависит от существующего. Теперь хочу существующее поле - очистить.
Пример условный - был uuid, добавили uuid_hash default toInt32(uuid), хотим его заполнить для старых партишенов и очистить uuid. почему-то optimize partition, даже final - мгновенно отдает «ОК», и больше ничего не проиходит. ReplicatedMergeTree.

Denis
18.07.2018
16:03:25
есть два сервера в кластере, и идет вставка через дистрибьютид таблицу, четные id налево, нечетные направо.
Как застравить запрос
select * from distributed where id in (1,2,3,4)
выполнить
select * from shard where id in (1,3) на первом
select * from shard where id in (2,4) на втором
(без ручного обращения к system.clusters)

Vladimir
18.07.2018
16:03:59
Подскажите, какую настройку крутить, чтобы обойти "DB::Exception: Limit for bytes to send or receive over network exceeded" ?

Nikolai
18.07.2018
16:40:16

Vladimir
18.07.2018
16:42:14

Alexey
18.07.2018
16:59:51
clickhouse-client под Mac
https://yadi.sk/d/uGxrTSHN3ZKPie

Denis
18.07.2018
17:11:55
жаль, больно запрос громоздкий получается с ручными условиями, а выигрыш в processed rows в разы.

Google

Konstantin
18.07.2018
17:12:39
под мак, судя по всему, по текущей доке не собирается

Vitaliy
18.07.2018
21:14:33
кто-нибуть думал над интеграцией с hashicorp vault?

Michal
19.07.2018
06:05:38

Antony
19.07.2018
06:12:51

k
19.07.2018
06:56:25
Коллеги из Яндекса, вы здесь?
Похоже у вас глобальная проблема с почтой

Firej
19.07.2018
06:57:21
Какая проблема
Это никак не связано с кликхаузом?

Stanislav
19.07.2018
06:58:08
Да вроде ходит почта...

k
19.07.2018
06:58:09
Нет, но не знаем куда идти вообще. Саппорт молчит

Stanislav
19.07.2018
07:04:05
не подскажу, просто проверил на своих ящиках

Vadim
19.07.2018
07:08:54

Alexander
19.07.2018
07:15:30

k
19.07.2018
07:18:36
Пока пробуем через саппорт

daria
19.07.2018
09:50:46
привет всем. возможно ли в set установить значение select'ом? например:
set date = (select ... from ... where ...)
пробую, ругается на синтаксис
значение в запросе одно

Mikhail
19.07.2018
09:55:46

Google

george
19.07.2018
10:05:22
Добрый день, скажите на что именно влияют скобки при создании таблицы
ORDER BY (dt,(dev_id, target_id))
или
ORDER BY (dt, dev_id, target_id )
где можно про это почитать?
Спасибо

Denis
19.07.2018
10:06:41

Mikhail
19.07.2018
10:07:54

Denis
19.07.2018
10:08:48
так я и говорю, что кх уже всё разложил и больше не будет оптимизировать. скорее всего надо размер партиции поменять. так-то он дефолтное значение как функцию держит, а не пишет сразу в таблицу


Yuran
19.07.2018
10:51:26
Подскажите пожалуйста про движок GraphiteMergeTree: в документации (https://clickhouse.yandex/docs/ru/table_engines/graphitemergetree/#table_engines-graphitemergetree) говорится, что в таблице должны быть следующие поля:
Path - имя метрики (сенсора Graphite).
Time - время измерения.
Value - значение метрики в момент времени Time.
Version - настройка, которая определяет какое значение метрики с одинаковыми Path и Time останется в базе.
У нас структура таблиц немного другая и там вместо поля Version есть поле Timestamp. Если посмотреть в исходники, то можно в файле dbms/src/Storages/MergeTree/registerStorageMergeTree.cpp увидеть, что по умолчанию колонка с версией должна называться Timestamp:
params.version_column_name = config.getString(config_element + ".version_column_name", "Timestamp");
Кому верить, и что делать, если схлопывания данных на практике не происходит, хотя на вид всё сконфигурировано правильно?

Vadim
19.07.2018
11:07:09

George
19.07.2018
11:41:47
@orantius, у вас в clickhouse.yandex/docs/en/formats в боковом баре есть пару битых ссылок. Например:

Saprow
19.07.2018
12:16:49
Ребят, как можно произвести выборку по месяцу, если отдельного столбца для месяца нету ?
*Имеется столбец типа Date

daria
19.07.2018
12:18:31

Saprow
19.07.2018
12:18:35
Есть

Tima
19.07.2018
12:18:38

daria
19.07.2018
12:18:39
toMonth(Date)

papa
19.07.2018
12:19:40
toMonth(Date)
toMonth для разных годов вернет одинаковое значение, toStartOfMonth более уникален в этом смысле.

Николай
19.07.2018
12:21:33
В clickhouse нет случайно pointInPolygon, только для geography type как в Postgis?

Dmitriy
19.07.2018
12:22:57
Ребят, всем привет! Подскажите можно ли отключить дедупликацию данных? Есть такой кейс: в кластер из 8 тачек прилетают данные, когда приходит несколько полностью одинаковых строк - они схлопываються в одну! Но такое поведение не нужно, так как таблица SummingMergeTree и эти строки должны быть в итого просуммированы по ключу! А в итоге получаю только одну строку, идет потеря. Спасибо.

Yuran
19.07.2018
12:26:19

Dmitriy
19.07.2018
12:27:17
Спасибо! Попробую!

Google

Dmitriy
19.07.2018
12:27:17
Похоже на настройку insert_deduplicate , которую вам, вероятно, нужно выставить в 0 (по идее её можно прямо во время INSERT выставить, для HTTP это будет типа POST /?insert_deduplicate=0)

Saprow
19.07.2018
12:37:13

Andrew
19.07.2018
12:41:10
Привет! Подскажите, пожалуйста, а есть способ запустить clickhouse с readonly на все replicated-таблицы? Где-то находил в документации, а так же вот тут в исходниках https://github.com/yandex/ClickHouse/blob/master/dbms/src/Storages/StorageReplicatedMergeTree.cpp - что достаточно просто убрать из конфига описание zookeeper-кластера, но у меня он в таком режиме сигфолтится (версия 1.1.54388)

Denis
19.07.2018
12:50:29

Tima
19.07.2018
12:51:09
Тут
SELECT * FROM system.functions WHERE name = 'toYYYYMM'
есть

Yuran
19.07.2018
12:51:17
а в доке нет этой функции(
На самом деле есть, но не там, где ожидаете https://clickhouse.yandex/docs/ru/table_engines/custom_partitioning_key/

Tima
19.07.2018
12:51:33
Я бы всё таки использовал toStartOfMonth

Yuran
19.07.2018
12:51:37
Традиционному партиционированию по месяцу соответствует выражение toYYYYMM(date_column).

Denis
19.07.2018
12:51:53
да уж. совсем-совсем не там

Dmitriy
19.07.2018
13:00:55
Сработало!! Спасибо большое!!?