
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

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

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
Фух. Впервые читал документацию в оригинале на русском.

Admin
ERROR: S client not available

Ololo
10.01.2018
04:21:09
Есть кто использовал 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
Спасибо!

Google

Alex
10.01.2018
07:35:53
коллеги, подскажите пожалуйста можно ли попросить кликхаус делать optimize table final на периодической основе? без сторонник скриптов
необходимо для 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