
Mike
09.01.2018
10:06:33
КХ за 0.007

Дмитрий
09.01.2018
10:21:09
Попробуйте партиционировать данные в вашей базе аналогично кликхаусу на какие-нибудь диапазоны подходящие под ваши запросы. Если вам точно нужен кх в этом месте, ~1000 строчных инсертов будет ок, если они прилетают не за один раз а размазанно в течении суток. Buffer engine может не подойти, т.к. данных очень мало, и скидываться на диск они будут редко, что когда-нибудь приведет к потерям данных, например при остановке кх-сервера. Либо при закрученном flush-интервале можно сохранять их чаще, но тогда смысла от этого не много - блоки будут такого же маленького размера, чтоб будет мешать merge-операции.
Поставьте в крон OPTIMIZE, это должно помочь.


Александр
09.01.2018
10:26:03
Попробуйте партиционировать данные в вашей базе аналогично кликхаусу на какие-нибудь диапазоны подходящие под ваши запросы. Если вам точно нужен кх в этом месте, ~1000 строчных инсертов будет ок, если они прилетают не за один раз а размазанно в течении суток. Buffer engine может не подойти, т.к. данных очень мало, и скидываться на диск они будут редко, что когда-нибудь приведет к потерям данных, например при остановке кх-сервера. Либо при закрученном flush-интервале можно сохранять их чаще, но тогда смысла от этого не много - блоки будут такого же маленького размера, чтоб будет мешать merge-операции.
Поставьте в крон OPTIMIZE, это должно помочь.
У нас по крону выполняется OPTIMIZE replacing merge tree таблицы, но она реплицируемая и был случай когда сложили весь кластер из-за тяжелого мерджа. А еще тут был прикол из-за отвалившихся реплик эти OPTIMIZE запросы набились в очередь в 1000 запросов и сервер никакие запросы не выполнял...


Дмитрий
09.01.2018
10:30:41
У вас для replacing merge tree был тяжелый запрос с final, или очень много маленьких кусков? К тому же видимо слишком часто, т.к. набить 1000 запросов кроном - нужно очень постараться. Есть предположение что можно выставить queryId для OPTIMIZE запроса, чтоб не натолкнуться на проблему очереди из таких запросов.

Google

Александр
09.01.2018
10:33:05


Mike
09.01.2018
10:56:46
Попробуйте партиционировать данные в вашей базе аналогично кликхаусу на какие-нибудь диапазоны подходящие под ваши запросы. Если вам точно нужен кх в этом месте, ~1000 строчных инсертов будет ок, если они прилетают не за один раз а размазанно в течении суток. Buffer engine может не подойти, т.к. данных очень мало, и скидываться на диск они будут редко, что когда-нибудь приведет к потерям данных, например при остановке кх-сервера. Либо при закрученном flush-интервале можно сохранять их чаще, но тогда смысла от этого не много - блоки будут такого же маленького размера, чтоб будет мешать merge-операции.
Поставьте в крон OPTIMIZE, это должно помочь.
Дмитрий, имеется ввиду replacing merge tree?

Сергей
09.01.2018
11:16:05

Mike
09.01.2018
11:20:28
Сергей мускул у нас ложится из-за like по varchar

Сергей
09.01.2018
11:30:04
Но это опять же «если есть возможность»
Если принципиально нужен фуллскан каждый раз, то это не вариант

Mike
09.01.2018
11:35:54
и fullscan и построение отчетов и граяиков за произвольные промежутки

Konstantin
09.01.2018
11:39:17
Всем привет!
подскажите если от пользователя с правами read only в dBeaver не могу сделать запросы:
DB::Exception: Cannot override setting (max_result_rows) in readonly mode, e.what() = DB::Exception
зачем он настройки перезаписывает?

Felixoid
09.01.2018
11:54:04

Cargeh
09.01.2018
12:09:03
Не нашел в документации инфы по смене имени колонки. Есть какой-то вариант без пересоздания столбца и без перекачивания данных из старого в новый?

Konstantin
09.01.2018
12:20:43

Felixoid
09.01.2018
12:21:11
в настройках CH /etc/clickhouse-server/users.d/

Google

Konstantin
09.01.2018
12:23:25
это не мой сервер) и по http все ок


Pavel
09.01.2018
14:18:16
есть вопросик по словарям, подготовил скрипт на шелле, которые возвращает CSV
делаю тестовую выборку из словаря
и CH насмерть виснет
2018.01.09 14:16:47.724069 [ 5 ] <Debug> executeQuery: (from [::1]:45166, query_id: 628e55f9-101d-4609-bbd9-5073abc2c77b) select dictGetString('maxmind_geoip_country', 'represented_country_geoname_id', toUInt64(IPv4StringToNum('11.22.33.44')))
2018.01.09 14:16:47.724485 [ 5 ] <Trace> InterpreterSelectQuery: FetchColumns -> Complete
2018.01.09 14:16:47.731587 [ 5 ] <Trace> ExecutableDictionarySource: loadAll Executable: /bin/bash -e /etc/clickhouse-server/dictionaries/geoip_maxmind/pull_geoip_maxmind.bash
вручную от имени юзера кликхауса скрипт выполняется и возвращает CSV корректно
судя по стрейсу - CH по-прежнему читается что-то читать с STDOUT скрипта
ну и опять же судя по strace
[pid 19783] mmap(NULL, 139264, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7fb57b7cc000
[pid 19783] read(22, "network,geoname_id,registered_co"..., 131072) = 131072
[pid 19783] write(1, "network,geoname_id,registered_co"..., 131072 <unfinished ...>
[pid 19751] <... read resumed> "network,geoname_id,registered_co"..., 1048576) = 131072
[pid 19751] futex(0x66a28a0, FUTEX_WAKE_PRIVATE, 2147483647) = 0
[pid 19751] wait4(19778, <unfinished ...>
[pid 19783] <... write resumed> ) = 131072
[pid 19783] read(22, "29,3017382,3017382,,0,0\n5.135.42"..., 131072) = 131072
[pid 19783] write(1, "29,3017382,3017382,,0,0\n5.135.42"..., 131072 <unfinished ...>
идут попытки чтения данных из выдачи моего скрипта ?


Tima
09.01.2018
14:22:33

Pavel
09.01.2018
14:22:57
#!/bin/bash -e
FILE_DATE="20180109"
TMP_FOLDER=`mktemp -d`
cd $TMP_FOLDER
wget --quiet "https://download.maxmind.com/app/geoip_download?edition_id=GeoIP2-Country-CSV&date=$FILE_DATE&suffix=zip&license_key=fake" -Ogeoip.zip
unzip -q geoip.zip
cd GeoIP2-Country-CSV_$FILE_DATE
cat GeoIP2-Country-Blocks-IPv4.csv
как-то вот такой
ну и формат CSV внутри
network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,is_anonymous_proxy,is_satellite_provider
1.0.0.0/24,2077456,2077456,,0,0
1.0.1.0/24,1814991,1814991,,0,0
1.0.2.0/23,1814991,1814991,,0,0
1.0.4.0/22,2077456,2077456,,0,0
1.0.8.0/21,1814991,1814991,,0,0
1.0.16.0/20,1861060,1861060,,0,0

Tima
09.01.2018
14:24:59
Это конечно страный, совет, но всё же - попробуй в скарипте заменить выччисление на вывод сразу ответа. Типа
echo "содежимое csv"
Может где-то чего-то нет и скрип не доходит до конца выполнения

Pavel
09.01.2018
14:26:02
я могу попробовать тупо вернуть несколько десятков строк из скрипта напрямую
/bin/bash -e /etc/clickhouse-server/dictionaries/geoip_maxmind/pull_geoip_maxmind.bash
network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,is_anonymous_proxy,is_satellite_provider
1.0.0.0/24,2077456,2077456,,0,0
1.0.1.0/24,1814991,1814991,,0,0
1.0.2.0/23,1814991,1814991,,0,0
1.0.4.0/22,2077456,2077456,,0,0

Google

Pavel
09.01.2018
14:29:08
вот так сделал
ну и код
cat /etc/clickhouse-server/dictionaries/geoip_maxmind/pull_geoip_maxmind.bash
#!/bin/bash -e
echo "network,geoname_id,registered_country_geoname_id,represented_country_geoname_id,is_anonymous_proxy,is_satellite_provider"
echo "1.0.0.0/24,2077456,2077456,,0,0"
echo "1.0.1.0/24,1814991,1814991,,0,0"
echo "1.0.2.0/23,1814991,1814991,,0,0"
echo "1.0.4.0/22,2077456,2077456,,0,0"
оооо, появилась человеко-понятная ошибка ?
спасибо ? Одно поле дважды в конфиге указал и парсер вис на нем

Anton
09.01.2018
15:04:26
Кто-нибудь знает? В FORMAT CSV можно указать разделитель?

Egor
09.01.2018
15:09:54

Anton
09.01.2018
15:10:18

Egor
09.01.2018
15:11:07

papa
09.01.2018
15:11:18
а в екселе при открытии файла нельзя разделитель выбрать?

Александр
09.01.2018
15:12:13

Сергей
09.01.2018
15:45:17
оу, не то процитировал, но смысл вроде не потерялся

Stas
09.01.2018
16:10:53
Коллеги, а как лучше обойти ситуацию когда нужен словарь с NULL которые пока не работают? Пока придумал только заменять в источникетнк псевдо-число и далее оборачивание функции вызова словаря if’ами. Может лучше решение есть?

Alex
09.01.2018
16:12:24

Stas
09.01.2018
16:13:17
Кмк, хорошее решение
Из-за ограничения словарей у меня там костыль-на костыле! Вместо complex string ключа + time range у меня хэши+time range :(

Mike
09.01.2018
17:16:00

Aliaksei
09.01.2018
18:57:49
слегка офтопик наверное: кокой редактор или IDE используют разработчики ClickHouse?

Alexey
09.01.2018
22:05:25

Google

Stas
09.01.2018
22:06:48

Alexey
09.01.2018
22:08:13
Проще говоря - есть вариант реализации, в котором не нужно сохранять ключи, где был NULL.

Stas
09.01.2018
22:09:39

Alexey
09.01.2018
22:09:53
Ok.

Ololo
10.01.2018
04:20:12
Фух. Впервые читал документацию в оригинале на русском.
Есть кто использовал clickhouse_sqlalchemy?

Рулон
10.01.2018
05:58:40
Да! все работает )

Ololo
10.01.2018
06:07:04
Ругается на UInt у меня.
Compiler <sqlalchemy_clickhouse.base.ClickHouseTypeCompiler object at 0x000002A07C606128> can't render element of type <class 'clickhouse_sqlalchemy.types.UInt32'>
И ещё там отсутствует тип DateTime в clickhouse_sqlalchemy.types. Это значит, что я могу использовать DateTime из главного модуля?
Впрочем, на все Int'ы ругается так же.
И, я так понял, primary_key=True в параметрах колонки использовать нельзя? Просто он сам в этом случае вставляет NOT NULL в запрос на создание таблицы, а такой директивы нет.
Кажется, придётся создание таблицы вручную описывать.

Kostya
10.01.2018
06:21:44
Есть кто использовал clickhouse_sqlalchemy?
Доброе утро. Я автор этой библиотеки. С DateTime есть проблема, да. Использовать родной DateTime sqlalchemy не получится. Создайте, пожалуйста, issue на github. Пример создания таблицы есть на github-странице проекта. Если есть ещё вопросы, то можно в личку.

Ololo
10.01.2018
06:22:55
Спасибо.

Kostya
10.01.2018
06:27:21

Ololo
10.01.2018
06:28:54
Создам issue вечером, если успею.

Kostya
10.01.2018
06:30:48
Спасибо!

Alex
10.01.2018
07:35:53
коллеги, подскажите пожалуйста можно ли попросить кликхаус делать optimize table final на периодической основе? без сторонник скриптов

Google

Alex
10.01.2018
07:38:17
необходимо для collapsing merge tree производить полное схлопывание чтобы не оставалось больше одной партиции, сейчас планируем писать в виде скрипта сбоку, но вдруг есть какая то настройка

Дмитрий
10.01.2018
07:49:28
Крутим throughput в ch-драйвере, и появилось несколько вопросов:
1) Если данные отправлять в нежатом виде, или с алгоритмом, отличным от представленного в конфигах, они всеравно пожмутся при merge-операции в соответствии с указанными compression в настройках сервера?
2) От чего защищает CityHash над сжатым блоком данных?
и в догонку, могут ли отправляемые блоки в пределах одного потока быть сжаты разными методами? Хочется проверить кейс, с отправкой в lz4 по дефолту и переключением на zstd, когда включается throttling по сети.

Virus
10.01.2018
09:04:57
насколько фатально убивать одну реплику в шарде по -9 если подвисла? кликхаус нормально переживает такое или лучше нормально завершать процесс, даже если это очень долго?

Felixoid
10.01.2018
09:43:47

Virus
10.01.2018
09:45:56
по логам он что-то очень сильно мержит, но при коннекте на порт выдает Resource temporarily unavailable. у нас просто очень много баз и таблиц в каждой, еще не успели переехать на одну широкую.
были ситуации когда реплика не вставала после -9 пока форсом не заставишь востановить данные.

Felixoid
10.01.2018
09:50:49
ну вот это, судя по всему, примерно то же самое
какие-то данные до диска не доезжают

Alex
10.01.2018
10:18:50
Парни, кто то пользовался агрегированными MATERIALIZED VIEW?

Ivan
10.01.2018
10:19:36
Коллеги, есть ли возможноcть как-то удалить данные за вчерашний день из таблицы с движком MergeTree?

Дмитрий
10.01.2018
10:22:24
нет, если партиционирована не по дням. А что мешает просто пересоздать её с POPULATE и нужным фильтром?
простите, думал вы про мат вью.
Удаление пока что боль. Можно налить данные из текущей партиции рядом с нужным фильтром, затем отцепить текущую партицю и перелить данные из соседней таблицы. Не атомарно и требует остановки записи.

Alex
10.01.2018
10:26:28
Мы используем
Подскажите пожалуйста. Создаю представления с сотоянием вида: ... AS SELECT sumState(a) as a, sumState(b) as b, CASE WHEN a > 0 THEN (b / a) ELSE 0 END AS c ... Так вот ругается на стороку с Case вот такой ошибкой DB::Exception: Illegal types of arguments (AggregateFunction(sum, UInt8), UInt8) of function greater. Может там надо a и b доагрегирровать?

papa
10.01.2018
10:28:21
sumState(a) as a