@clickhouse_ru

Страница 159 из 723
papa
02.06.2017
12:19:44
и сколько у вас разных (ip, streamname,useragent) ?

и какая средняя длина у строк

Ilya
02.06.2017
12:55:27
Коллеги, подскажите, пожалуйста. В локальной сети на выделенную машину поставил CH в дефолтовых настройках. Как подключиться с dev машины к CH через Tabix в реализации "без инсталляции", если такое вообще возможно. Перепробовал все, коннекта нет

prll
02.06.2017
12:57:07
с дефолтными настройками подключиться из сети нельзя.

Google
prll
02.06.2017
12:57:16
надо править listen_host

Ilya
02.06.2017
13:02:07
я комментарии убрал

<http_server_default_response>... понял, сейчас попробую

Maksim
02.06.2017
13:05:42
и сколько у вас разных (ip, streamname,useragent) ?
всего их около 2 млн, разных где-то в три раза меньше. Ширина думаю под килобайт

Alex
02.06.2017
13:07:56
Как-то странно, что отжирает настолько много памяти

Maksim
02.06.2017
13:09:30
ок, разберусь ещё

Alex
02.06.2017
13:15:17
@maxlapshin вот пример по нашей базе. SELECT * FROM ( SELECT COUNT() AS c, UserIP FROM impressions WHERE EventDate >= '2017-05-20' GROUP BY UserIP ORDER BY c DESC ) LIMIT 5 5 rows in set. Elapsed: 1.612 sec. Processed 145.22 million rows, 1.93 GB (90.09 million rows/s., 1.20 GB/s.)

ОЗУ скушало копейки

Если начинать добавлять в связку GROUP BY - после этого растёт потребление памяти, что в принципе логично, но не настолько критично как у вас. Возможно получается всё же слишком много записей? Стоит попробовать как-то групировать пользователей сразу, к примеру генерировать какой-то fingerprint

Ilya
02.06.2017
13:25:42
поставил <listen_host>::</listen_host> и рестартовал. но сервер через tabix все равно не доступен

может еще что надо сделать?

Andrey
02.06.2017
13:38:53
netstat -natp | grep LISTEN

Google
Vladimir
02.06.2017
13:47:51
может еще что надо сделать?
Или посмотреть что говорит curl -i http://host:port

Ilya
02.06.2017
13:49:05
хм, сказал Ок

я пытаюсь зайти, используя http://ui.tabix.io/#/login

Andrey
02.06.2017
13:53:26
Вы curl на сервере делали или на своей тачке?

Ilya
02.06.2017
13:55:24
curl на сервере с использованием внешнего IP, на локальной win машине открыл браузером

Ilya
02.06.2017
13:56:26
да

Andrey
02.06.2017
13:56:45
В tabbix указываете с портом или без?

Порт у вас стандартный?

Ilya
02.06.2017
13:56:53
с портом

8123

Andrey
02.06.2017
13:57:33
А что в консоли браузера при подключении через tabbix?

Ilya
02.06.2017
13:58:59
Хост: http://10.0.0.234:8123, login default, pass пустой.... ВЫдает "ошибка доступа"

Direct CH

Andrey
02.06.2017
13:59:42
В консоли, не на странице

В хроме под виндой открывается по F12 вроде

Ilya
02.06.2017
14:01:56
/#/login:1 XMLHttpRequest cannot load http://10.0.0.234:8123/s1/query.

OPTIONS http://10.0.0.234:8123/s1/query 501 (Not Implemented)

/#/login:1 XMLHttpRequest cannot load http://10.0.0.234:8123/s1/query. Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://ui.tabix.io' is therefore not allowed access. The response had HTTP status code 501.

Google
Andrey
02.06.2017
14:03:19
Ребзя, а как это в CH настраивается? Cors в смысле

papa
02.06.2017
14:06:06
всего их около 2 млн, разных где-то в три раза меньше. Ширина думаю под килобайт
а агрегируете как, суммы или уники? может можно группироать по хешам фиксированной ширины, а потом джойнить к ним исходные строки.

Maksim
02.06.2017
14:07:37
SELECT ip, name, type, user_id, country, referer, useragent, dictGetString('useragents','browser_type',tuple(useragent)) AS ua_browser_type, sum(deleted_at - created_at) AS view_time, um(bytes_sent) AS bytes_sent, min(toUnixTimestamp(created_at)) AS created_at_, max(toUnixTimestamp(deleted_at)) AS deleted_at_, min(id) AS id_, count(distinct id) AS count FROM sessions WHERE account_id=19446 AND created_at_date='2017-06-02' AND created_at > (toDateTime(1495148194)) GROUP BY ip, name, type, user_id, country, referer, useragent, created_at_date ORDER BY created_at_ asc LIMIT 200

вот, даже без вложенного селекта

я группирую всё, что похожее и вот оно не влезает в 9 гигабайт

papa
02.06.2017
14:19:17
count(distinct id) =uniq(id)

Dig
02.06.2017
14:19:56
referer и useragent - длинные строки. Используйте hash функции, намного сэкономите памяти при Group By

papa
02.06.2017
14:20:22
т.е. тяжелый агрегат, тяжелые ключи. миллион кардинальность. может, так и должно быть.

Dig
02.06.2017
14:22:07
была где-то ссылка здесь на то, как делать Group By, если не влезает в память. Поищите.

GROUP BY и Memory limit exceeded

https://events.yandex.ru/lib/talks/4556/

papa
02.06.2017
14:25:05
вообще, если память у вас есть, и никому кроме себя вы не мешаете, то ставьте сколько нужно. иногда можно оценить какой у вас рост данных в этом запросе будет в ближайшие пару лет, т.е. когда этот вопрос встанет опять.

Maksim
02.06.2017
14:28:26
да, у меня очень много строк после group by остается

окей, следующий вопрос: если я задеру max_query_memory до, скажем, 24 гигабайт при том, что на сервере сейчас 32 гига памяти, кликхаус может упасть с OOM из-за этого?

https://events.yandex.ru/lib/talks/4556/
супер, это именно мой вопрос!

Ilya
02.06.2017
14:40:20
Еще вопрос есть. Как с помощью https://github.com/yandex/clickhouse-odbc подключиться к базе из R (Win)? поставил релиз 64 бит, R 64 бит. Пишу library(DBI) con <- dbConnect(odbc::odbc(), driver = "ClickHouse ANSI", # database = "default", uid = "default", #pwd = "password", host = "10.0.0.234", port=8123L ) Выдает ошибку: Error: nanodbc/nanodbc.cpp:950: HY000: Cannot parse port number.

Maksim
02.06.2017
14:47:08
Ооо, group_by_overflow='any' !!

Dig
02.06.2017
14:49:39
Вот пример, как hash позволяет уменьшить время запроса и потребление памяти: Запрос 1 - используем hash: select fromDomainHash, any(fromDomain), count() from test group by fromDomainHash order by count() desc format JSON "rows": 375, "statistics": { "elapsed": 0.026554691, "rows_read": 1636501, "bytes_read": 39930314 } Второй запрос - без использования hash: select fromDomain, count() from test group by fromDomain order by count() desc format JSON "rows": 375, "statistics": { "elapsed": 0.024187994, "rows_read": 1636501, "bytes_read": 53022322 } В первом случае памяти потребовалось в 1,35 раза меньше!

Maksim
02.06.2017
14:51:41
а domainHash при этом надо сохранить при записи? Т.е. мне надо хранить hash(useragent) для этого?

Sergei
02.06.2017
14:54:25
Привет! никто не подскажет match(haystack, pattern) можно сделать icase

Google
Sergei
02.06.2017
14:54:26
?

papa
02.06.2017
14:57:52
хотя нет, это для like/position

а domainHash при этом надо сохранить при записи? Т.е. мне надо хранить hash(useragent) для этого?
хранить при чтении быстрее, иначе придется читать длинную колонку и считать по ней хеши.

Maksim
02.06.2017
15:02:17
хранить при записи в смысле?

papa
02.06.2017
15:04:00
да, сохранять при записи. например добавить колонку с default hash(domain)

Dig
02.06.2017
15:11:23
Мы используем fieldHash Uint64 materialezed cityHash64(field)

Maksim
02.06.2017
15:12:32
ну в любом случае надо сделать новую таблицу и туда все данные перелить, верно?

Dig
02.06.2017
15:13:29
Не помню, почему не подошел default, а materialized сработал

Maksim
02.06.2017
15:14:00
> Такой столбец не может быть указан при INSERT, то есть, он всегда вычисляется.

а он вычисляется один раз при вставке или всегда потом при каждом обращении?

Dig
02.06.2017
15:19:26
Судя по информации bytesRead, при вставке

Maksim
02.06.2017
15:41:36
помогло!

Итак, что у меня было. Запрос с group by, оставляющий очень много строк, не влезал в память. Я сделал alter table sessions add column ref_hash UInt64 materialized cityHash64(referer); и поменял с group by referer на group by ref_hash Теперь всё стало сильно лучше и влезает в 10 гигабайт.

papa
02.06.2017
15:48:37
а исходные рефереры ответе не нужны?

Maksim
02.06.2017
15:50:28
неа

мне надо по ним сгруппировать

Maksim
02.06.2017
15:51:34
и ещё я поменял вложенный селект с count distinct на uniqCombined((field1,field2,field3))

Ilya
02.06.2017
16:18:41
подскажите пожалуйста какой сейчас Go коннектор к кликхаусу считается самым тру?

Google
Maksim
02.06.2017
16:20:14
нисколько

у меня одна таблица

f1yegor
02.06.2017
16:28:33
я группирую всё, что похожее и вот оно не влезает в 9 гигабайт
От Алексея был доклад по способам группировки. Месяц или 2 назад

Maksim
02.06.2017
16:28:41
даа, здесь выше выложили

я его прослушал уже

f1yegor
02.06.2017
16:51:08
Да думал может попрактиковаться

Pavel
02.06.2017
16:51:32
практикуемся на С++ :)))

на го три либы, а на плюсах одна, даешь конкуренцию :)

Igor
02.06.2017
16:52:03
уже три? :О

Ilya
02.06.2017
16:52:37
я нашел две более-менее активных

Pavel
02.06.2017
16:53:57
ок, две, могу ошибаться:)

вот плюсовому драйверу очень не хватает батчера, красивого

в проекте я нечто на коленке написал, что задачку решает, но блокирует поток приема данных, некрасиво

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