
Denis
13.09.2018
20:37:46

Vsevolod
13.09.2018
20:41:54

Denis
13.09.2018
20:45:18
у вас есть 10 нод, 5 шардов по 2 реплики, вы создаете дистрибьютид таблицу на каждой ноде.
теперь можно ходить и делать запросы на любой из 10 нод.
но у вас тупое приложение все время ходит к первой ноде, и эта нода делает финальные агрегации, и загружена больше всех.
вы ставите chproxy как балансер и начинаете ходить ко всем 10, все 10 загружены равномерно.

Vsevolod
13.09.2018
21:26:14
тогда мне это совсем не нужно, понятно

Google

Kirill
13.09.2018
22:53:36
А кто сталкивался с задачей удаления дублированных записей ?
Когда по одному ключу две записи записались идентичных ?

nnnik
14.09.2018
03:04:24
Если у вас табличек много, вы уверены что вам КХ нужен?
ну, относительно много табличек
основные таблицы - это логи
но к ним есть таблицы(справочники), описывающие объекты с их свойствами, упоминаемые в этих логах
@vstepankov пжл подскажите, в чем лайф-хак? деражть справочники в массивах?

Kirill
14.09.2018
03:39:21

nnnik
14.09.2018
04:05:19

Рулон
14.09.2018
06:02:17
Доброе утро! Есть 10 серверов и 1 csv, можно как-то параллелить загрузку?

Evgeny
14.09.2018
06:23:31
Лить в distributed таблицу
Не будет параллельного чтения, только запись

Vasilij
14.09.2018
06:45:42
Привет!
В ответ на
TRUNCATE TABLE table
получил исключение:
Received exception from server (version 18.10.3):
Code: 48. DB::Exception: Received from 127.0.0.1:9003. DB::Exception: Can't proxy this query. Unsupported query type.
Я правильно понимаю, что для Replicated таблиц truncate просто не поддерживается?
И вот ещё вопрос:
ALTER TABLE table FETCH PARTITION кидает исключение, если мы эту партицию уже бэкапили. Можно как-то изменить это поведение (не кидать исключение), или проверить средствами самого Clickhouse, что партиция уже забэкаплена?

Konstantin
14.09.2018
09:28:20
подскажите, пытаюсь настроит chproxy при подключении получаю:
"127.0.0.1:61813": invalid username or password for user "default"; query: ""
при этом пользователя default вообще нет в конфиге, чтяднт?

Pavel
14.09.2018
10:20:28
2018.09.14 10:09:51.596455 [ 23 ] <Debug> MemoryTracker: Peak memory usage (total): 150.00 KiB.
2018.09.14 10:09:51.596472 [ 23 ] <Information> TCPHandler: Processed in 0.037 sec.
2018.09.14 10:09:52.010968 [ 23 ] {190} <Debug> executeQuery: (from 127.0.0.1:45300) INSERT INTO dns.traffic VALUES
2018.09.14 10:09:52.048632 [ 23 ] {190} <Error> executeQuery: std::exception. Code: 1001, type: std::bad_typeid, e.what() = std::bad_typeid (from 127.0.0.1:45300) (in query: INSERT INTO dns.traffic VALUES)
2018.09.14 10:09:52.048703 [ 23 ] <Debug> MemoryTracker: Peak memory usage (total): 150.00 KiB.
https://gist.github.com/pavel-odintsov/5cb2177f2735712fc033fcc9352158dc

Google

Alex
14.09.2018
10:56:36
посоны, как мне по красоте можно табличку вместе с данными из постгреса в кликхаус перенести?
Ну что? Есть идеи?
Могу подключиться к постгресу через odbc.
Могу сделать pgsql dump, clickhouse restore сделать не могу.

Alexey
14.09.2018
11:10:02
почитайте в доке
Данные о такси в Нью-Йорке
Как импортировать сырые данные
там как раз перенос данных из постгреса в кх

Alex
14.09.2018
11:11:38
ок, спс

Alexey
14.09.2018
11:12:20
https://clickhouse.yandex/docs/ru/getting_started/example_datasets/nyc_taxi/

Mike
14.09.2018
11:20:49

Kirill
14.09.2018
11:26:02

Mike
14.09.2018
11:28:31

Kirill
14.09.2018
11:39:46

Mike
14.09.2018
11:43:14


Alexey
14.09.2018
11:50:47
18.12.13:
SELECT
value,
formatReadableSize(value),
description
FROM system.metrics
WHERE metric = 'MemoryTracking'
┌─────────value─┬─formatReadableSize(value)─┬─description──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
│ 5090069495129 │ 4.63 TiB │ Total amount of memory (bytes) allocated in currently executing queries. Note that some memory allocations may not be accounted. │
└───────────────┴───────────────────────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────┘
1 rows in set. Elapsed: 0.006 sec.
256Gb на тачке оперативы, что-то он странное показывает, нет?

Stanislav
14.09.2018
11:51:37
в лимит упёрлись
max_memory_usage

Alexey
14.09.2018
11:52:18
$ free -m
total used free shared buff/cache available
Mem: 257849 9408 25868 2508 222572 245311
Swap: 0 0 0
в смысле

Stanislav
14.09.2018
11:53:14
В смысле, у меня, например, на не особо большом сервере для юзера установлен лимит:
<max_memory_usage replace="replace">6000000000</max_memory_usage>

Alexander
14.09.2018
11:53:38
https://clickhouse.yandex/docs/ru/operations/settings/query_complexity/

Alexey
14.09.2018
11:54:20
метрика показывает, сколько все запросы используют оперативы прямо сейчас, причем тут лимит этот?

Google

Stanislav
14.09.2018
11:54:48
А... Перепутал сообщение об ошибке и результат запроса
Тут разве что заммапленое могло посчитаться...

Alexey
14.09.2018
11:55:52
просто раньше на 54390 норм показывало, постоянно мониторил это, а теперь...
ладно, попробую дообновить кластер до конца и порестарчу раза три :) говорят помогает
еще такая ошибка:
Code: 49, e.displayText() = DB::Exception: Attempt to attach to nullptr thread group, e.what() = DB::Exception
при запросе:
CREATE TABLE db.table ON CLUSTER repl
ENGINE = Memory AS
SELECT
id,
ts,
sum(proc)
FROM db.table2
WHERE date = (today() - 1)
GROUP BY id
HAVING sum(proc) > 0
ORDER BY ts ASC
LIMIT 1000000
при 54390 такого не было
db.table2 - Distributed-таблица над ReplicatedCollapsingMergeTree

Алексей
14.09.2018
12:54:13
Если построить CREATE MATERIALIZED VIEW с таблицы MergeTree. В MergeTree применить ALTER TABLE name_table DELETE WHERE user_id>0, то эти данные останутся в MATERIALIZED VIEW?
Как их удалить в MATERIALIZED VIEW?

Combot
14.09.2018
12:58:07
combot.org/c/-1001080295593

Alex
14.09.2018
13:16:30
Пробовал кто-нибудь использовать JetBrains DataGrid для подключения к кликхаусу через https?
У меня пишет: cannot initialize http client

Denis
14.09.2018
13:19:44
а они уже запилили поддержку? в обещаниях видел, в релизе - нет

Alex
14.09.2018
13:20:21
Да, вот пару дней назад скачал.

Ivan
14.09.2018
13:20:34

Alex
14.09.2018
13:23:04

Alexey
14.09.2018
13:30:56

Alex
14.09.2018
13:32:09
пришло время обновиться до 18.12.14)

Roman
14.09.2018
13:34:28
на 18.12.14 все еще лучше

Alexey
14.09.2018
13:40:52
?

Google

Konstantin
14.09.2018
13:54:06
коллеги, может кто помочь с настройкой chproxy?

Ivan
14.09.2018
13:55:36
https://blog.jetbrains.com/datagrip/2018/08/15/datagrip-2018-2-2-clickhouse-support-and-bugfixes/
урааааааа!

Alexander
14.09.2018
14:02:02
Нужно issue на гитхабе хоть с каким-нибудь описанием. А то потеряется в чате.

Alexey
14.09.2018
14:02:20

Denis
14.09.2018
14:11:49

Alexey
14.09.2018
14:16:16

Ivan
14.09.2018
14:16:42
на всякие праздники

Bob
14.09.2018
15:00:39
Привет!
Вчера попрбовали decimal | LowCardinality, перелили таблицу и сделали optimize final.
Сегодня обновили КХ до 18.12.14 и КХ не стартанул из-за ошибок:
Uncompressed size of column id_dep(19624475) is not divisible by the size of value
Колонка объявлена как id_dep LowCardinality(UInt32)
Могу выслать логи если проблема не известная…

Alexey
14.09.2018
17:25:14
На всякий случай - пока LowCardinality годится для тестирования, но не для продакшена.
Кстати, от LowCardinality(UInt32) наверное большого профита не будет. Ведь UInt32 - это уже намного лучше, чем String.

Bob
14.09.2018
17:30:29
Мы как раз тестировали и все стобцы где меного значений обернули в LowCardinality.

Alexey
14.09.2018
17:30:59
Имеется ввиду - где немного значений?

Bob
14.09.2018
17:32:09
А такой вопрос, с LowCardinality(UInt32) на LowCardinality(String) возможно буде перейти через alter колонки?
По идее размерность столбца не должна меняться. Только словарь..

Nikolai
14.09.2018
17:36:23
Проверил. Получилось.

Alexey
14.09.2018
17:46:49

Google

Bob
14.09.2018
17:55:30
Можно сразу в тест добавить...
А словарь от LowCardinality где храниться? Я полагал что alter со сменой типа у словаря будет достаточно дешевой операцией.

Nikolai
14.09.2018
18:02:40

Alexey
14.09.2018
18:02:55
А словарь от LowCardinality где храниться? Я полагал что alter со сменой типа у словаря будет достаточно дешевой операцией.
Словарь хранится в отдельном файле. Некоторые столбцы имеют несколько файлов с данными (сериализуются в несколько "потоков"), в том числе, LowCardinality.
ALTER для столбцов, у которых меняется физическое представление, реализуется так же, как чтение, CAST, запись. Операция по смене типа словаря, может быть дешёвой, за счёт маленького объёма данных, которых нужно прочитать с диска и записать обратно. По CPU не уверен, может быть не очень дёшево.
(бывают случаи, когда ALTER бесплатен - например, замена UInt32 на DateTime и подобное).

Nikolai
14.09.2018
18:04:40

Vladimir
14.09.2018
18:13:45
а для lowcardinality не делали бесплатный nullable?

Alexey
14.09.2018
18:15:23
Там есть некоторая специализация для Nullable. Возможно как раз бесплатная с точки зрения хранения.
Николай ответит позже (~ через пол часа).

Bob
14.09.2018
18:18:33

Nikolai
14.09.2018
19:41:20

Vladimir
14.09.2018
19:42:13
здорово

G
14.09.2018
22:42:24
Коллеги, подскажите пожалуйста в связке GROUP BY ... ORDER BY ... разве не будет в any первое значение в отсортированной группе. А в anyLast последнее?
ORDER BY же после GROUP BY выполняется вроде бы как
value | group
------+------
1 | 1
2 | 1
3 | 2
4 | 3
5 | 3
SELECT group, any(value) as open, anyLast(value) as close FROM t GROUP BY group ORDER BY value;
group | open | close
------+-----+------
1 | 1 | 2
2 | 3 | 3
3 | 4 | 5
SELECT
group,
(SELECT value FROM t tt WHERE tt.group = t.group ORDER BY value ASC LIMIT 1) as open,
(SELECT value FROM t tt WHERE tt.group = t.group ORDER BY value DESC LIMIT 1) as close
FROM t
GROUP BY group
ORDER BY group ASC;
group | open | close
------+-----+------
1 | 1 | 2
2 | 3 | 3
3 | 4 | 5


Denis
14.09.2018
23:53:37
anyLast и any любое значение возвращают
anyLast(x)
Выбирает последнее попавшееся значение. Результат так же недетерминирован, как и для функции any.
потому что 48 потоков выполняют запрос и кто-то вернет первый что-то, и это будет any
коррелированные запросы в КХ не работают (вычисляются один раз как константа).
create table xx (a Int64, b Int64) engine = MergeTree partition by tuple() order by tuple()
insert into xx select number, 0 from numbers(1000000);
insert into xx select number+1000, 1 from numbers(1000000);
select b,o,e from (
select arraySort(groupArray(a)) ar,b,ar[1] o, ar[-1] e from xx group by b)
order by b

Mike
15.09.2018
08:21:20
А в каких случаях anyLast предпочтительнее, чем any?