@clickhouse_ru

Страница 474 из 723
Tima
28.03.2018
10:26:10
Andrey
28.03.2018
10:28:18
Есть вопрос про логику связки SELECT INSERT Есть вопрос про логику связки INSERT SELECT Я делаю следующий запрос: `INSERT INTO params_agg_cum SELECT user_id, today() - 42, max(dt), argMaxIf(p_1, date, isNotNull(p_1)) AS p_1, .......... argMaxIf(p_n, date, isNotNull(p_n)) AS p_n, FROM ( SELECT user_id, date, dt, p_1, .......... p_n FROM gamora.params_agg_cum WHERE (date = ((today() - 42) - 1)) AND (user_id >= 1000000000) UNION ALL SELECT user_id, date, dt, p_1, ............ p_n FROM gamora.params_agg WHERE (date = (today() - 42)) AND (user_id >= 1000000000) ) GROUP BY user_id, date ` Параметров(p_1...p_n) у меня много, около 50 Я включил distributed_aggregation_memory_efficient и max_bytes_before_external_group_by = 10500000000 На выходе должно получиться около 240 миллионов строк Но в память запрос не влезает . Ограничение по памяти у меня в 70ГБ Правда ли что перед тем как вставить, он будет весь ответ представлять в памяти?

Артемий
28.03.2018
10:39:28
Wolf
28.03.2018
10:41:59
Я вот помню что как раз говорили что она не создается, и надо дроп креайт делать

Google
Kirill
28.03.2018
11:05:52
Все-таки прошу проверить, что это не ошибка, так как ранее говорилось, что она будет сама создаваться.
Выполните любой запрос на SELECT от юзера у которого log_queries = 1 и через несколько секунд она появится

Артемий
28.03.2018
11:06:38
Выполните любой запрос на SELECT от юзера у которого log_queries = 1 и через несколько секунд она появится
Передаю через http запрос: .../?log_queries=1 У пользователя <log_queries>1</log_queries> version: 1.1.54370

Kirill
28.03.2018
11:17:37
Что-то поломалось, надо смотреть

LeiDruid
28.03.2018
11:21:12
Подскажите, куда клик может девать память? Он активно занимает памяти больше, чем весит набор данных и прибивается по OOM

Wolf
28.03.2018
11:23:35
О каких обьемах данных и памяти идет речь ?

LeiDruid
28.03.2018
11:28:14
20 ГБ данных, клик сжирает 24 гига памяти и падает

Зачем ему столько при таком количестве данных?

Wolf
28.03.2018
11:28:44
Ну запросы какие то тяжёлые может?

LeiDruid
28.03.2018
11:29:07
неа

Wolf
28.03.2018
11:29:12
У меня просто на кликах по шесть гигов памяти и на некоторых серверах 450 гигов база

Конфиг дефолтный использую

Артемий
28.03.2018
11:29:30
Что-то поломалось, надо смотреть
Решилось. После остановки (или рестарта) писалось: clickhouse-server service is stopped, однако по факту он не останавливался и конфиг не менялся. Ошибку нашли, все ок. Таблица с логами появилась.

LeiDruid
28.03.2018
11:30:09
Google
Wolf
28.03.2018
11:30:57
в том-то и дело, что объем памяти больше датасета
Ну тут надо смотреть в сторону запросов мне кажется, а может там словари толстые или ещё чего используется

LeiDruid
28.03.2018
11:31:14
Нет никаких словарей, запрос только по БД

Артемий
28.03.2018
11:31:31
20 ГБ данных, клик сжирает 24 гига памяти и падает
В логе может быть запрос сжирающий память. Ограничить потребление памяти всеми запросами можно через настройку <max_memory_usage_for_all_queries>.

Tima
28.03.2018
11:32:05
Нет никаких словарей, запрос только по БД
Покажите свой запрос. И попробуйте по частям его выполнить, тогда может стать понятно что жрет столько памяти

Alexander
28.03.2018
11:32:11
20 ГБ данных, клик сжирает 24 гига памяти и падает
А это именно он? У меня dentry память жрет, насколько я успел разобраться, из-за большого числа файловых операций. Самому интересно, что будет, когда slab reclaimable упрется в потолок. Пока растет почти линейно.

Артемий
28.03.2018
11:36:30
Его для этого вообще не нужно рестартовать, она и так должна создаваться если её нет
В настройках не было <log_queries>1</log_queries>. Рестарт нужен был для внесения изменений конфиг. Передача параметра log_queries=1 не создавала табилцу.

Жека
28.03.2018
11:36:56
Подскажите, функцию которая будет суммировать столбец с накоплением

Stanislav
28.03.2018
11:37:40
А это именно он? У меня dentry память жрет, насколько я успел разобраться, из-за большого числа файловых операций. Самому интересно, что будет, когда slab reclaimable упрется в потолок. Пока растет почти линейно.
Не знаю, кто жрёт, но у меня - аналогичный случай. Один из серверов кластера стал линейно кушать память, причём именно процессом кликхауса. После рестарта проблем пока нет.

Жека
28.03.2018
11:38:26
кумулятивная сумма нужна

Артемий
28.03.2018
11:39:12
ОК
Нет, причина не в этом. Проивзел тест удаления еще раз. Затем делаю запрос SELECT. Таблица не создается.

Kirill
28.03.2018
11:39:26
LeiDruid
28.03.2018
11:51:56
Память определенно куда-то течет

284154 clickho+ 20 0 80.345g 0.063t 37036 S 6400 50.1 11:34.11 clickhouse-serv

Wolf
28.03.2018
11:53:04
Какая версия кх?

А то я только вчера везде обновился до последней но вроде тьфу-тьфу не течет

LeiDruid
28.03.2018
11:53:55
1.1.54370

Становится только хуже

284154 clickhous 20 0 75.5G 61.4G 38064 S 1208 47.9 35:13.74 clickhouse-server

Google
LeiDruid
28.03.2018
11:55:07
Датасет, минуточку, 23Гб

Его можно было бы в память уже 2,5 раза положить

Andrey ?
28.03.2018
11:55:29
А это точно реальное использование памяти?

http://www.linuxatemyram.com/

Stanislav
28.03.2018
11:56:10
вторая цифра - rss

То есть, оно реально ест 60+ Гб

LeiDruid
28.03.2018
11:56:48
# free -m total used free shared buff/cache available Mem: 131072 66864 64135 4396 71 64135

А то я уже грешным делом начал сомневаться как смотреть память в линуксе :)

Alexander
28.03.2018
11:57:26
у меня что-то похожее было, когда после обновления из apt старый сервис не сдох, а новый не до конца запустился. сожрал всю память кх, и раком сервер поставил. но там один раз я его грохнул, заработало. только slab растет и unrecl и recl.

LeiDruid
28.03.2018
11:57:50
не, у меня ничего такого не было

Просто начал падать

Я уже специально обновился до последней версии

и на старой падал и на новой падает

Alexander
28.03.2018
11:58:46
у меня это сопровождалось всякими race condition в логе ошибок кх, раз в полминуты туда что-то писалось

Andrey
28.03.2018
12:02:35
Странно что данные обрабатываемые на файловой системе занимают 15гб, но не пролезают в запросе в 70гб

Есть вопрос про логику связки SELECT INSERT Есть вопрос про логику связки INSERT SELECT Я делаю следующий запрос: `INSERT INTO params_agg_cum SELECT user_id, today() - 42, max(dt), argMaxIf(p_1, date, isNotNull(p_1)) AS p_1, .......... argMaxIf(p_n, date, isNotNull(p_n)) AS p_n, FROM ( SELECT user_id, date, dt, p_1, .......... p_n FROM gamora.params_agg_cum WHERE (date = ((today() - 42) - 1)) AND (user_id >= 1000000000) UNION ALL SELECT user_id, date, dt, p_1, ............ p_n FROM gamora.params_agg WHERE (date = (today() - 42)) AND (user_id >= 1000000000) ) GROUP BY user_id, date ` Параметров(p_1...p_n) у меня много, около 50 Я включил distributed_aggregation_memory_efficient и max_bytes_before_external_group_by = 10500000000 На выходе должно получиться около 240 миллионов строк Но в память запрос не влезает . Ограничение по памяти у меня в 70ГБ Правда ли что перед тем как вставить, он будет весь ответ представлять в памяти?

Жека
28.03.2018
12:14:22
Спасибо)

Stanislav
28.03.2018
12:18:00
Странно что данные обрабатываемые на файловой системе занимают 15гб, но не пролезают в запросе в 70гб
В конструкции типа SELECT ... FROM (SELECT ... FROM (SELECT ... только самый внутренний селект, читающий данные непосредственно с диска, не будет жрать память.

Mike
28.03.2018
12:24:25
Добрый день, может быть существует какая-то аггрегатная функция, которая поможет из таблицы выделить некие группы событий. в таблице есть id сессии и время запросов с этим id. в течении суток может повторяться несколько раз. если разница между группами событий больше времени t то это уже новая сессия. вот как-то разбить на такие промежутки (посчитать их количество) возможно или это решается каким-то иным путем? (с 10 утра до 10:15 утра 10 запросов, с 12:00 до 12:25 - 40 запросов итд) или я совсем фантастики хочу ? :)

Google
Andrey
28.03.2018
12:32:17
Как я понимал - это возможность скидвать промежуточные данные на диск во время запроса.

Alex
28.03.2018
12:42:47
А что тогда даёт distributed_aggregation_memory_efficient ?
Эта настройка не связана с внешней агрегацией - она решает проблему, когда при Distributed запросе много серверов шлют большой стейт агрегации на сервер-инициатор и там кончается память.

Справедливости ради, сколько данные занимают на диске не является показателем того, сколько они будут занимать в памяти. Например, на диске они сжаты, а в памяти нет.

Andrey
28.03.2018
13:05:24
Ок, свой первый вопрос я порешал Но возник ещё один. Можно ли перенести партицию из одной таблицы в другую, с учётом того что у них одинаковая структура. Поможет ли мне alter table <table> attach partition ? Если есть такая возможность - как это правильно сделать?

Stanislav
28.03.2018
13:06:28
вначале detach, потом mv, потом attach

Правда, именно с partition не пробовал, только с part

Artem
28.03.2018
13:07:10
Коллеги, подскажите, пожалуйста, какой способ организации аналога common table expression в кликхаусе считается правильным? Т.е. предположим у меня есть две колонки и с ними делаются всяческие сложные манипуляции. Потом данные нужно сгруппировать по результатам манипуляций и посчитать какой то агрегат. CTE нету, вложенный select from (select ) работать будет не так эффективно. Остаётся только дублировать все вычисления? В качестве абстрактного примера: select m,sum(value) from (select transform(x,[1,2,3],[11,12,13]) as xx, transform(y,[1,2,3],[111,122,133]) as yy, xx*xx+xx*yy+yy*yy as m,value from (select 1 as x,2 as y, 10 as value)) group by m Вот хотелось бы отказаться от внешнего select'a. Но как это сделать без инлайна и дублирования всех вычислений в запросе?

Kirill
28.03.2018
13:11:02
Нет, причина не в этом. Проивзел тест удаления еще раз. Затем делаю запрос SELECT. Таблица не создается.
так, при рестарте оно появиться, но сама собой не создается. Раньше оно работало, насколько я помню, почему сейчас не работает не понятно, но можно сделать чтоб оно заработало, поизучаю вопрос

Michal
28.03.2018
13:15:24
Всем привет, есть вопрос - есть ли какие либо встроенные методы программного управления базами таблицами - версионирование схемы итд итп, или все за пределами KX? автоматизирую этот процесс и вот решил на всякий случай уточнить. Спасибо.
В продолжение вчерашней темы про миграции схем базы: оказывается есть вполне работающее (без бубна) решение. Описал тут: https://github.com/filimonov/ClickHouse/wiki/Clickhouse-database-schema-migrations

Ievgen
28.03.2018
13:18:25
спасибо, почитаю

golang-migrate/migrate )) вчера как раз нашел

а на сколько безопасно делать миграцию on cluster?

Kirill
28.03.2018
13:21:14
а на сколько безопасно делать миграцию on cluster?
Не всё сейчас реализовано, с этим пока проблемы (для Replicated или Distributed таблиц были проблемы с ALTER или чем-то там ещё)

Ievgen
28.03.2018
13:22:36
мм, что тогда рекомендуется? я просто только изучаю этот вопрос, делать альтер на кащдой реплике индивидуально?

Kirill
28.03.2018
13:23:22
мм, что тогда рекомендуется? я просто только изучаю этот вопрос, делать альтер на кащдой реплике индивидуально?
Нет, в рамках шарда ALTER прекрасно реплицируется, сейчас самое надежное выполнять запросы на каждом шарде, а не реплике

Ievgen
28.03.2018
13:25:10
Tо есть сдостаточно выполнить ALTER на одной реплике в шарде? Просто уточняю на всякий слуачй.

Иван
28.03.2018
13:33:40
Всем привет! Как можно сделать колонку nullable в процессе джойна? Контекст: во время any left join получаются пустые поля, а хотелось бы NULL

Google
Alexander
28.03.2018
13:37:04
Артемий
28.03.2018
13:40:07
Всем привет! Как можно сделать колонку nullable в процессе джойна? Контекст: во время any left join получаются пустые поля, а хотелось бы NULL
Хороший вопрос. Из-за такого поведения сейчас приходится сравнивать с пустотым значернием поля по которым идет join. Поля, получаеме из подзапроса не NULL, как ожидалось. Настройка join_use_nulls в документации не описана.

Andrey
28.03.2018
13:51:24
вначале detach, потом mv, потом attach
mv - имеется ввиду на файловой системе?

Stanislav
28.03.2018
13:52:00
да

Alexander
28.03.2018
14:09:17
Aleksandr
28.03.2018
14:20:33
Здравствуйте. Подскажите пожалуйста, есть ли функционал для перешардирования данных? например было добавление 1-ХХ шардов в кластер, предварительно ключем шардирования будет функция rand(). Спасибо.

Aleksandr
28.03.2018
14:21:38
Понял, спасибо большое ?

Vitaliy
28.03.2018
14:23:24
Aleksandr
28.03.2018
14:25:17
спасибо

Юрий
28.03.2018
15:25:48
Добрый вечер уважаемые! не подскажите ли, почему я ловлю такую ошибку? DB::Exception: Unknown function arraySlice

зависит ли это от версий клиента? или бд?

ClickHouse release 1.1.54289 Added functions: arraySlice server version 1.1.54236 блин =\ видимо в этом.

Pavel Tyavin
28.03.2018
15:33:52
Здравствуйте Как удалить distributed таблицу со всеми подтаблицами?

Michal
28.03.2018
15:38:39
Вроде как DROP TABLE ... ON CLUSTER xxx должно работать.

Pavel Tyavin
28.03.2018
15:39:08
не, это вы наверное с replicated путаете

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