@clickhouse_ru

Страница 107 из 723
?Zloool?
05.04.2017
11:11:07
Чутка ошибся с количеством данных, речь идет о 20+гб данныз, не влезут в оперативку т.к. таблица для внутреннего пользования и использовать ее будут редко, нет смысла под нее покупать железо, в оперативку которого это все влезет

Mike
05.04.2017
11:15:42
Всем добрый день, подскажите плиз, куда посмотреть. При вставке данных в replicatedmergetree в логах реплик только одного шарда появляются вот такие вот записи "<Warning> store.store_log_local (StorageReplicatedMergeTree, CleanupThread): Couldn't remove 20170404_20170404_635_635_0 from ZooKeeper: no node" - при этом количество данных в репликах правильное и вообще количество данных правильно и нужное. в логах реплик второго шарда - тишина

конфигурация 2х2 (2 шарда по 2 реплики)

Alex
05.04.2017
11:41:19
Чутка ошибся с количеством данных, речь идет о 20+гб данныз, не влезут в оперативку т.к. таблица для внутреннего пользования и использовать ее будут редко, нет смысла под нее покупать железо, в оперативку которого это все влезет
Тогда можно попробовать словарь с лейаутом complex_key_cache (часто используемые записи будут кэшироваться с вытеснением), но данные придётся загрузить в таблицу (MergeTree, так как она с индексом, или вообще в какую-нибудь MongoDB, ведь ClickHouse не так хорош для Key-Value нагрузки).

Google
Stepan
05.04.2017
12:43:35
+1 , тоже очень волнует этот вопрос

Maksim
05.04.2017
12:45:45
скажите плиз как сгруппировать по дню данные?

Vitaliy
05.04.2017
12:46:44
а про это кто-нибудь расскажет?:)
Пока есть только readonly и не readonly пользователи.

Роман
05.04.2017
12:48:03
Пока есть только readonly и не readonly пользователи.
они на весь экземпляр работают или огранмчены базой?

*ограничены

Sergey
05.04.2017
12:48:25
Добрый день! Подскажите, кто-то собирал ODBC-драйвер под RHEL/Centos 6 ?

Maksim
05.04.2017
12:48:39
а что значит DB::Exception: Limit for result rows exceeded: read 2227 rows, maximum: 500

где это ограничение стоит ?

Igor
05.04.2017
12:50:06
в вашем драйвере, судя по всему

в querystring http-запроса в кликхаус max_result_rows=500 не передается?

Google
Igor
05.04.2017
12:51:37
если нет, то в конфиге сервера

Vitaliy
05.04.2017
12:51:38
они на весь экземпляр работают или огранмчены базой?
У пользователя можно задать <allow_databases>...</allow_databases>

Роман
05.04.2017
12:52:03
понял, спасибо большое

Maksim
05.04.2017
12:52:29
если нет, то в конфиге сервера
возможно. напрямую через клиент все норм) спасибо

а не подскажите как размер таблицы узнать ?

Igor
05.04.2017
13:10:11
Доброе утро, скажите пожалуйста как посмотреть через запрос размер таблиц ?

SELECT * FROM system.parts WHERE active AND table = '...' там столбец есть с кол-вом байт его можно еще через formatReadableSize(x) прогнать

SELECT sum(bytes) FROM system.parts WHERE active AND database = 'db_name' AND table = 'table_name'

papa
05.04.2017
13:32:48
зависит от типа таблицы, но в целом да.

Nikita
05.04.2017
14:54:37
в тестах/доке не нахожу: а можно как-то mutlipart/form-data передать запрос и файл с внешними данными? беспокоюсь только что запрос может быть слишком длинный и не влезет в query string (установлен ли в CH лимит, кстати?)

про лимит вопрос снимаю, в доке нашел про 16кб

Alexey
05.04.2017
19:24:20
Насколько я помню, параметры (в том числе запрос) нет возможности передать в mutlipart/form-data. То есть, если передаются внешние таблицы, то запрос придётся указать в параметре URL.

Roman
06.04.2017
09:30:04
Помогите разобраться. Необходимо получать сумму значений в зависимости от фильтров. Т.к. фильтры вставляются в запрос на лету, то он выглядит следующим образом SELECT sum(column) FROM table WHERE Date = today() AND ($val = 1 OR Field = $val) AND ($val2 = 1 OR Field2 = $val2) Если $val = 1 - значит фильтровать данные не нужно. По идее, условие сразу должно вернуть true и не влиять на производительность запроса. Но это влияние есть и оно весьма заметно. Есть у кого-то идеи, как это можно оптимизировать?

ᴬˡᵉˣᵉᵞ
06.04.2017
10:04:52
Через IF не пробовали?

Roman
06.04.2017
10:08:50
пробовал

без разницы

Виктор
06.04.2017
10:12:46
А, вы ожидаете, что Field = $val не будет вычисляться

Сейчас такое не реализовано, оптимизатора запросов по факту почти нет, к сожалению.

Производительность проседает так как выражение все равно будет вычисляться

Google
Виктор
06.04.2017
10:13:30
Просто убирайте весь этот AND

Roman
06.04.2017
10:15:18
Не могу убрать AND, т.к. запрос посылается из графаны и там он может быть только в одном варианте.

Виктор
06.04.2017
10:18:16
А этот $val как задается?

Может, туда тупо писать "Field = value" ?

Roman
06.04.2017
10:19:25
это template значение, которое подставляется в запросы. В нем может лежать идентификатор, например

Dmitriy
06.04.2017
10:23:04
Привет всем. Подскажите кто нибудь рассматривал\пробовал\использует cehp в качестве сторажда под CH ? У нас есть 2х10Gb сеть, на себя от себя. Вообще как такой вариант? Данных где-то около 10-20ТБ в месяц приходит. выборки из данных в рамках недели до двух месяцев.

papa
06.04.2017
12:21:57
Помогите разобраться. Необходимо получать сумму значений в зависимости от фильтров. Т.к. фильтры вставляются в запрос на лету, то он выглядит следующим образом SELECT sum(column) FROM table WHERE Date = today() AND ($val = 1 OR Field = $val) AND ($val2 = 1 OR Field2 = $val2) Если $val = 1 - значит фильтровать данные не нужно. По идее, условие сразу должно вернуть true и не влиять на производительность запроса. Но это влияние есть и оно весьма заметно. Есть у кого-то идеи, как это можно оптимизировать?
clickhouse вычисляет все аргументы and/or, все аргументы if, итд. т.к. они векторизуются и вычисляются пачками и потом пачками над ними выполняются последующие функции. мы такие вещи оптимизируем перед генерацией запроса: вычисляем выражения, известные статически, выбразываем бесполезные условия, итд. правда в вашем запросе это не помогло бы, т.к. в зависимости от строки таблицы каждое из условий может оказаться значимым, это можно только при выполнении оптимизировать.

Alexey
06.04.2017
13:27:39
Привет всем. Подскажите кто нибудь рассматривал\пробовал\использует cehp в качестве сторажда под CH ? У нас есть 2х10Gb сеть, на себя от себя. Вообще как такой вариант? Данных где-то около 10-20ТБ в месяц приходит. выборки из данных в рамках недели до двух месяцев.
Мы не пробовали. Интересно, какой получается throughput последовательного чтения с Ceph? А если со всех серверов сразу читать? А какая latency на операции типа создания, удаления, переименовывания файлов? И какая latency и throughput по случайным чтениям?

Dmitry
06.04.2017
13:41:49
что-то мне кажется, что это паршивая затея

Mike
06.04.2017
13:45:05
https://www.sebastien-han.fr/blog/2012/08/26/ceph-benchmarks/

Maksim
06.04.2017
13:47:39
ребят может кто подскажет как бэкап сделать всей базы?

в mysql это делалось обычным mysqldump. тут только по одной таблице?

Vitaliy
06.04.2017
14:28:58
ребят может кто подскажет как бэкап сделать всей базы?
По-эффективному через FREEZE PARTITION для каждой партиции, по-простому clickhouse-client -q 'SELECT * FROM ... FORMAT Native' > dump.bin , еще можно доп. реплику поднять и выключить после наливки

Maksim
06.04.2017
14:30:00
По-эффективному через FREEZE PARTITION для каждой партиции, по-простому clickhouse-client -q 'SELECT * FROM ... FORMAT Native' > dump.bin , еще можно доп. реплику поднять и выключить после наливки
как раз таки репликами мне кажется вариант не очень. мне надо собрать бэкап базы и положить на s3 aws предварительно сжав gzip

Vladislav
06.04.2017
14:34:03
а MySQL ты как бекапил? не с реплики?

Maksim
06.04.2017
14:34:59
у нас отдельный сервер mysql для статистики. написали скрипт бэкапов на s3. делается sql пакуется в gzip заливается в облако. плохо?

По-эффективному через FREEZE PARTITION для каждой партиции, по-простому clickhouse-client -q 'SELECT * FROM ... FORMAT Native' > dump.bin , еще можно доп. реплику поднять и выключить после наливки
по простому хреновая затея)) т.к. select кладет все содержимое в память а потом пишет в файл. при большом количестве записей не хватит памяти. походу

Igor
06.04.2017
14:38:09
проще правда через freeze partition

Google
Maksim
06.04.2017
14:38:59
freeze partition неплохо да. я вот не пойму до сих пор через select делается дамп и уже 25 гигов. а партициями там вообще мало места занимает. там все данные?

Maksim
06.04.2017
14:42:23
вот data папка 464 мб. а если выгрузить в tsv то получится 21 гб ))

Igor
06.04.2017
14:43:06
https://clickhouse.yandex/reference_ru.html#Отличительные%20возможности%20ClickHouse

второй пункт

Maksim
06.04.2017
14:44:25
класс. то есть тогда писать скриптик надо - получаем список таблиц в базе данных. делаем партишены. пакуем в архивы закидываем бэкап куда необходимо?

по другому никак?

Alexey
06.04.2017
14:46:25
Обычный SELECT без GROUP BY, ORDER BY и т. п. использует небольшое ограниченное количество памяти. Он не формирует результат в памяти, а отдаёт его клиенту потоково.

Andrey
06.04.2017
14:48:03
Ребят, подскажите по tutorial. Там есть такой запрос: SELECT DestCityName, sum(Year = 2014) AS c2014, sum(Year = 2015) AS c2015, c2015 / c2014 AS diff FROM ontime WHERE Year IN (2014, 2015) GROUP BY DestCityName HAVING c2014 > 10000 AND c2015 > 1000 AND diff > 1 ORDER BY diff DESC в нем в функцию sum передается условие как я понял, но не указывается что суммировать. Как он работает? В доках про условия внутри функции sum ни слова(

Igor
06.04.2017
14:48:32
может там sumIf должен быть

в доке это описано вот тут https://clickhouse.yandex/reference_ru.html#Комбинатор%20-If.%20Условные%20агрегатные%20функции

Andrey
06.04.2017
14:49:42
да, это более логично. Видимо до этого шага в tutorial никто не доходил))))

Igor
06.04.2017
14:49:51
дайте ссылку плиз хотя не надо, нашел, ща поправлю

Maksim
06.04.2017
14:52:47
native 13 gb tsv 22 gb. какой самый компатный ? может есть формат который оставляет родную струтуру в 4xx mb ?)

Igor
06.04.2017
14:53:51
ну сожмите результат Native в gzip тот же, например, да и все

Alexey
06.04.2017
14:57:07
native 13 gb tsv 22 gb. какой самый компатный ? может есть формат который оставляет родную струтуру в 4xx mb ?)
Это, приблизительно, получится, если дамп в формате Native ещё сжать. Можете сжать gzip или родным clickhouse-compressor (второе быстрее).

Igor
06.04.2017
14:58:13
аа, извините

Maksim
06.04.2017
15:05:22
Это, приблизительно, получится, если дамп в формате Native ещё сжать. Можете сжать gzip или родным clickhouse-compressor (второе быстрее).
у меня вообще 230 мб получилось))) еще лучше! clickhouse-compressor установил. но он включается для прилетающих данных на сервер как написано в доке. а как его заюзать при выгрузке в файл?

Google
Igor
06.04.2017
15:06:30
> Если вы указали в URL compress=1, то сервер будет сжимать отправляемые вам данные.

Maksim
06.04.2017
15:07:31
clickhouse-client -q 'SELECT * FROM statistics.banner_history_segments FORMAT Native' > dump2.bin

понял

ребят это шок)) компрессор чудо



7 секунд чтобы собрать все данные и положить в архив в файлик)

если кому интересно как я делал бэкап curl 'http://localhost:8123/?database=statistics&compress=1' -d 'SELECT * FROM banner_history_segments FORMAT Native' > data.bin

gzip -c data.bin > dump.gzip

22 млн записей. 7 секунд создание файл + 7 секунд gzip

Страница 107 из 723