
Alexander
22.05.2017
21:56:29
Я тут вроде не причём :)

Pavel
22.05.2017
21:56:39
DB::Settings::... вызывает такое поведение

Let Eat
22.05.2017
21:56:50
DB::Settings::Set это что-то в кликхаусе, по названию оно не дложно бы вызываться слишком часто)

Pavel
22.05.2017
21:56:55
вот да

Google

Alexander
22.05.2017
22:00:54

Pavel
22.05.2017
22:01:29
слушайте, у меня есть машина с такой нагрузкой
секнду

Alexander
22.05.2017
22:02:33
Так что там нагружать: curl_easy_perform с одной строкой rowbinary в цикле.
В #define Apply_for_settings видно random на loadbalancing. , Если оно вообще к этому.

Pavel
22.05.2017
22:10:49
http://paste.org.ru/?qjf5hy
у меня вот так
но у меня не хттп протокол
я открываю базу 1 раз и пишу строки туда через С++ либу

Alexander
22.05.2017
22:14:15
Попробую завтра с другим load_bal

Pavel
22.05.2017
22:53:47
Поодной да

Alexey
23.05.2017
00:02:22
SHA256 используется при проверке пароля, если для пользователя он указан в таком виде. Но порядок не совпадает, так как хэширование коротких строк - это по крайней мере миллионы в секунду, даже таким тяжёлым алгоритмом.

Google

Alexander
23.05.2017
00:47:54
Сомнительно. У меня одно соединение.

Alexey
23.05.2017
01:00:27
sudo perf top —call-graph dwarf
покажет более правильные стек-трейсы.

Alexander
23.05.2017
01:29:42
Ok, завтра сделаю. Просто, если я правильно понимаю, то всё же при вставке в буфер ничего сложного происходить не должно, кроме обработки http.
Извиняюсь, чаты перепутал, надеюсь удалилось.

Pavel
23.05.2017
09:27:38
а может цурл каждый раз открывает новое соединение?
и это вызывает валидацию пароля повторно?

Roman
23.05.2017
09:48:40
В http протоколе пароль проверяется на каждый запрос. Нет сущности "пароль на соединение"

Pavel
23.05.2017
09:50:00
ну, видимо в этом и ответ, почему столько ша1 в выдаче

Alexey
23.05.2017
11:02:23

Norbert
23.05.2017
11:22:38
Всем привет! Это внутрияндексовский чат или тут действует NDA
?

Felixoid
23.05.2017
11:23:00
это внешний чат

Norbert
23.05.2017
11:23:36
ладно я тогда пойду в другое место :)

Andrey
23.05.2017
11:28:44
Но мы не против послушать))

Alexey
23.05.2017
11:46:04
после обновления до последней версии появилась ошибка во внешнем словаре: last_exception: Code: 36, e.displayText() = DB::Exception: Unknown key \'name[1]\' inside attribute section, e.what() = DB::Exception
ругается вот на это:
<name>created</name>
<type>DateTime</type>
<null_value>NULL</null_value>
хотя в мускуле поле (timestamp) селектится нормально, и до обновления работало нормально. Никто не знает в чем причина?

Nikolai
23.05.2017
11:55:37
<name> случайно не дублируется?

Alexey
23.05.2017
12:07:30
точно, мой косяк, почему-то раньше не алертило об ошибке =)
значит никто словарем и не пользовался, можно выпиливать

Alexey
23.05.2017
12:17:55
Мы планируем устроить хакатон по ClickHouse для frontend разработчиков. Основная тема - всевозможные визуализации данных, инструменты для работы с ClickHouse. Нужны ваши идеи :)

Геннадий
23.05.2017
12:26:18
Здравствуйте. Можно ли найти пересечение двух массивов? Не смог найти подходящие функции.
Массивы содержат строки, и мне нужно найти элементы массива A, которые не содержатся в массиве B.

Google

Boris
23.05.2017
12:26:37

Alexey
23.05.2017
12:26:43
Да.

Геннадий
23.05.2017
12:40:16
Здравствуйте. Можно ли найти пересечение двух массивов? Не смог найти подходящие функции.
Массивы содержат строки, и мне нужно найти элементы массива A, которые не содержатся в массиве B.
Коллеги подсказали
SELECT arrayFilter(x -> NOT arrayExists(y -> (y = x), ['a', 'b', 'c'] AS B), ['b', 'c', 'd', 'e', 'f'] AS A)

Vladislav
23.05.2017
13:11:49
и в open-source ?

Alexey
23.05.2017
13:20:06
За один день трудновато.

papa
23.05.2017
13:20:42
QueryEditor extends React.Component, вот это все.

Norbert
23.05.2017
13:41:35
Мне сказали что для просмотра статистики запросов к базе можно смотреть в system.query_log
но позже когда я залез в документацию, то ничего такого не нашел

Alexander
23.05.2017
13:42:29

Norbert
23.05.2017
13:44:50
ее переименовали или теперь такой функциональности больше нет?

Igor
23.05.2017
13:46:27
https://github.com/yandex/ClickHouse/issues/230

Norbert
23.05.2017
13:46:49
похоже нет
Спасибо! Сейчас попробую


Alexey
23.05.2017
13:47:41
Логгирование запросов включается настройкой log_queries. Настройка может быть изменена динамически, так же как все остальные настройки.
По-умолчанию включено везде в нашем пакете и отключено в пакете для сторонних пользователей.
Логгирование запросов полностью асинхронное. Запись сначала вставляется в очередь. Очередь блокирующая, но её максимальный размер достаточно большой, чтобы это не вызывало проблем. Затем запись из этой очереди достаёт отдельный поток и кладёт себе в массив. Периодически, этот поток сбрасывает массив, записывая данные в таблицу. Периодичность сброса по-умолчанию - 7.5 секунд. Записи, не сброшенные в таблицу, недоступны для чтения.
По-умолчанию, запись осуществляется в таблицу system.query_log. Если таблица для записи уже существует, то проверяется соответствие её структуры текущей структуре лога. Если она не соответствует, то существующая таблица сначала переименовывается в query_log_0 или query_log_1 и т. п, а затем создаётся новая таблица, как если бы её не было. Если таблица не существует, то создаётся новая таблица с движком MergeTree.
Проверка и создание таблицы осуществляется только один раз - при первой записи в лог. Эти действия (инициализация логгера) делаются синхронно (при первом запросе).
Периодичность сброса и имя таблицы могут быть настроены в конфиге:
<!— Лог запросов. Используется, только для запросов с настройкой log_queries = 1. —>
<query_log>
<!— В какую таблицу писать. Если таблицы нет, она создаётся.
При изменении структуры лога, старая таблица переименовывается и создаётся новая.
—>
<database>system</database>
<table>query_log</table>
<!— Интервал сброса данных в таблицу. —>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>
При штатном завершении работы сервера, данные тоже сбрасываются в таблицу.
Если при записи данных возникает ошибка, то данные теряются и ошибка пишется в обычный лог.
Логгирование производится в четырёх случаях:
В начале выполнения запроса.
При успешном завершении запроса.
В случае исключения до начала выполнения запроса.
В случае исключения в середине выполнения запроса.
Лог запросов не очищается автоматически. Для ручной очистки можно использовать запрос ALTER ... DROP PARTITION.


Felixoid
23.05.2017
13:52:10
Логгирование запросов включается настройкой log_queries. Настройка может быть изменена динамически, так же как все остальные настройки.
По-умолчанию включено везде в нашем пакете и отключено в пакете для сторонних пользователей.
Логгирование запросов полностью асинхронное. Запись сначала вставляется в очередь. Очередь блокирующая, но её максимальный размер достаточно большой, чтобы это не вызывало проблем. Затем запись из этой очереди достаёт отдельный поток и кладёт себе в массив. Периодически, этот поток сбрасывает массив, записывая данные в таблицу. Периодичность сброса по-умолчанию - 7.5 секунд. Записи, не сброшенные в таблицу, недоступны для чтения.
По-умолчанию, запись осуществляется в таблицу system.query_log. Если таблица для записи уже существует, то проверяется соответствие её структуры текущей структуре лога. Если она не соответствует, то существующая таблица сначала переименовывается в query_log_0 или query_log_1 и т. п, а затем создаётся новая таблица, как если бы её не было. Если таблица не существует, то создаётся новая таблица с движком MergeTree.
Проверка и создание таблицы осуществляется только один раз - при первой записи в лог. Эти действия (инициализация логгера) делаются синхронно (при первом запросе).
Периодичность сброса и имя таблицы могут быть настроены в конфиге:
<!— Лог запросов. Используется, только для запросов с настройкой log_queries = 1. —>
<query_log>
<!— В какую таблицу писать. Если таблицы нет, она создаётся.
При изменении структуры лога, старая таблица переименовывается и создаётся новая.
—>
<database>system</database>
<table>query_log</table>
<!— Интервал сброса данных в таблицу. —>
<flush_interval_milliseconds>7500</flush_interval_milliseconds>
</query_log>
При штатном завершении работы сервера, данные тоже сбрасываются в таблицу.
Если при записи данных возникает ошибка, то данные теряются и ошибка пишется в обычный лог.
Логгирование производится в четырёх случаях:
В начале выполнения запроса.
При успешном завершении запроса.
В случае исключения до начала выполнения запроса.
В случае исключения в середине выполнения запроса.
Лог запросов не очищается автоматически. Для ручной очистки можно использовать запрос ALTER ... DROP PARTITION.
#faq #query_log #log_queries


Maksim
23.05.2017
14:06:56
Добрый день, что нибудь появилось для миграций в clickhouse ?

Maksim
23.05.2017
14:08:13

Google

Maksim
23.05.2017
14:09:08
создание новых таблиц и т.д.

Maksim
23.05.2017
14:10:04

Maksim
23.05.2017
14:10:48
Яндекс дайте миграции(

Alexey
23.05.2017
14:11:36

Andrey
23.05.2017
14:11:39

Pavel
23.05.2017
14:12:02
за миграции -- минус минус.
это не первостепенная фича, первостепенная - кастомные шардирования)
и батчер)

Maksim
23.05.2017
14:12:22
о нет
)) блин

Vladimir
23.05.2017
14:12:29

Pavel
23.05.2017
14:12:37
оооо, дай доки)

Alexey
23.05.2017
14:13:07
Trivial Buffer вмержили
На всякий случай предупрежу, что он ещё не разработан. Он вмержен для удобства последующей разработки.

Pavel
23.05.2017
14:13:24
а в чем ключевое отличие от обычноно буфера ожидается?

Vladimir
23.05.2017
14:13:25

Alexey
23.05.2017
14:15:02
В общем случае он ничем не лучше Buffer, и использовать его не надо.
Подходит для специфических кейсов - когда данные вставляются пачками, но всё-таки достаточно часто. И нужно сохранять порядок вставленных блоков, а также осуществлять дедупликацию блоков.

Pavel
23.05.2017
14:15:32
тогда это не батчер

Google

Oleg
23.05.2017
14:17:36
Привет, у нас в ZK у некоторых ReplicatedMergeTree таблиц по 19 миллионов znode-ов (при том что в system.parts у соотв. таблиц не более 500-600 записей). Похоже, это ненормально и ZK от этого нехорошо. Есть идеи, что может быть не так и как починить?

Alex
23.05.2017
14:23:32
Были ли случаи добавления/удаления реплик?
Если есть старая реплика, на которой не был выполнен DROP TABLE перед выключением, записи из лога репликации не будут удаляться в надежде, что она включится.

Oleg
23.05.2017
14:27:50
Да, похоже, дело именно в этом. А как теперь это починить, если старой реплики уже нет и не будет?

Alex
23.05.2017
14:31:33
Можно вручную удалить каталог в ZK: rmr /<path-to-table>/replicas/<replica>
Главное не перепутать с живой репликой :)

Oleg
23.05.2017
14:32:13
Ясно, так и подумал. Спасибо большое за быстрый ответ! :)

Roman
23.05.2017
14:51:36
Месяц назад поменялся формат записей в Zookeeper-е. С версии 3 на версию 4. Теперь новую версию КХ нельзя откатить на более старую, ругается на
DB::Exception: Unknown ReplicatedMergeTreeLogEntry format version: 4
Есть простой способ все-таки откатиться?

Alexey
23.05.2017
16:09:13
Простого нет, лучше всё-таки не откатываться.
Есть только сложный.

Roman
23.05.2017
16:10:38

Alexey
23.05.2017
16:15:30
Баг присутствовал во всех старых версиях.

Roman
23.05.2017
16:18:33
В логах ошибка "Sizes of columns doesn't match" появилась только в новых версиях (в 1.1.54135 не было). Но возможно я наступил еще в какой-то баг? Симптомы - растет количество несмердженных чанков, от этого растет потребление CPU, через пару дней cpu заканчивается совсем

Alexey
23.05.2017
16:22:57
Возможно, раньше не проявлялось по другой причине. Или я ошибаюсь.
Поставить версию из master будет нормально. Мы как раз сейчас из неё собираем релиз. Но ещё не факт, что она пойдёт в stable.

Igor
23.05.2017
16:31:06