
Aleksey
17.03.2017
13:46:28

papa
17.03.2017
13:50:25

Aleksey
17.03.2017
13:51:01
и если array большой то все равно будет out_of_memory... возможно конечно что КХ умный и поднимет только часть столбца (как указано в документации), но у меня так получается что куски(чанки) в партициях сами по себе по 5 гигов в сжатом состоянии... и у меня лимит в 10 гигов на запрос легко достигается

papa
17.03.2017
13:51:48

Google

Andrey
17.03.2017
13:52:48

Aleksey
17.03.2017
13:55:29

Alex
17.03.2017
13:58:21
Если select * без условий, и результат пишется например на диск, можно сильно уменьшить потребление памяти, сделав SET max_threads=1. Скорость от этого не должна особо уменьшиться.
Данные целиком в оперативку влезать разумеется не должны

papa
17.03.2017
14:00:41
а своп на сервере есть? в него не могло утечь?
вроде не должно.
SELECT * FROM table FORMAT Null
^CCancelling query.
Query was cancelled.
227672064 rows in set. Elapsed: 215.635 sec. Processed 229.70 million rows, 201.21 GB (1.07 million rows/s., 933.10 MB/s.)
KiB Mem: 13200198+total, 13132107+used, 680912 free, 825944 buffers
KiB Swap: 0 total, 0 used, 0 free. 10452568+cached Mem
также стоит заметить, что в целом запросы с select * работают медленней "обычных" запросов, т.к. читают все колонки одновременно.

Vladislav
17.03.2017
14:17:00
Всем привет :) Такой вопрос по Clickhouse — можно ли как-то быстро искать не по первичному ключу в таблице? Насколько я вижу в документации — вторичных индексов нет...
Думал организовать дополнительные таблицы с нужным первичным индексом, но есть необходимость искать сразу по нескольким колонкам, что даст большое число join, которыми вроде тоже не рекомендую злоупотреблять :)

Andrey
17.03.2017
14:18:51

Vitaliy
17.03.2017
14:20:09

Vladislav
17.03.2017
14:23:08
В MySql поиск очень долгий :) 5 млн записей.
Пока просто исследуем вопрос и не тестировали Clickhouse... Возможно у кого-то были схожие случаи
То есть в текущем виде у нас по вторичному ключу может понадобиться выбрать из 5млн

Google

papa
17.03.2017
14:25:20
зависит от данных, но может получиться так, что фуллскан вас устроит.

Andrew
17.03.2017
14:26:01

Vladislav
17.03.2017
14:26:07
Равенство
Строк

Zarina
17.03.2017
14:26:23
Всем, добрый день. Только начала осваивать CH. Возник вопрос:
Не могу понять почему в toDate не учитывается часовой пояс клиента? На сервере UTC
TZ=Europe/Moscow clickhouse-client —use_client_time_zone 1 —query="SELECT DISTINCT hour FROM imho_video ORDER BY hour LIMIT 5;"
2017-01-01 00:00:00
2017-01-01 01:00:00
2017-01-01 02:00:00
2017-01-01 03:00:00
2017-01-01 04:00:00
TZ=Europe/Moscow clickhouse-client —use_client_time_zone 1 —query="SELECT DISTINCT toDate(hour) as date FROM imho_video ORDER BY date LIMIT 5;"
2016-12-31
2017-01-01
2017-01-02
2017-01-03
2017-01-04

Vitaliy
17.03.2017
14:26:30
будет быстро
по крайне мере у меня на 4 млд. довольно шустро все бегает

Vladislav
17.03.2017
14:27:08
А шустро это насколько? :) Хотя бы примерно)
Минуты, секунды...

Vitaliy
17.03.2017
14:27:52
10-20 сек без семплирования

Andrew
17.03.2017
14:28:00
На моём сферическом сервере в вакууме из таблички типа LOG в 45 млн строк конкретная запись по условию "равно" нашлась за 0.728 sec.

Vladislav
17.03.2017
14:28:17
Не по первичному ключу?

Andrew
17.03.2017
14:28:26
в Log нет первичных ключей

Vladislav
17.03.2017
14:28:34
А, ок :)

Zarina
17.03.2017
14:33:14
Корректно работает если только подставлять часовой пояс:
TZ=Europe/Moscow clickhouse-client --use_client_time_zone 1 --query="SELECT DISTINCT toDate(hour, 'Europe/Moscow') as date FROM imho_video ORDER BY date LIMIT 5;"
2017-01-01
2017-01-02
2017-01-03
2017-01-04
2017-01-05
Можно обойтись без подставления часового пояса для toDate?

Andrey
17.03.2017
14:37:37

Vladislav
17.03.2017
15:17:47
А с поиском по Array бенчмарков ни у кого нет?
В смысле select по полю с Array и выбирать записи где в Array есть нужный элемент
Или это будет очень медленно?

Dmitry
17.03.2017
15:31:05
зависит от размера массива

Bob
17.03.2017
16:03:26
Привет, обновил в debain CH в debain:
dpkg -l| grep clickhouse
ii clickhouse-client 1.1.54188 amd64 clickhouse-client
ii clickhouse-server-base 1.1.54188 amd64 clickhouse-server-base
ii clickhouse-server-common 1.1.54188 amd64 clickhouse-server-common
Но клиент и сервер другой версии:
# clickhouse-client
ClickHouse client version 1.1.54187.
Connecting to localhost:9000.
Connected to ClickHouse server version 1.1.54187.
:) select version();
│ 1.1.54187 │

Google

Bob
17.03.2017
16:04:36

Dmitry
17.03.2017
16:08:19
Народ вопрос
Есть задача сбора метрик с приложения, однако по некоторым причинам все возможные TSDB не подходят
http://pastebin.com/YyYPjJJq
вот так я думаю будет понятен кейс
у меня сейчас реализованы теги , однако хочется делать теги как пару Key - Value, двумерные массывы не подходят
Единсвенное до чего я додумался это под каждый key делать столбец

Pavel
17.03.2017
16:11:51
теги - плохая идея для кликхауса
да, под каждый кей свой столбец - это подход КХ
но если у вас их сотни тысяч... не лучшая это идея в общем
ровно как и юзать КХ как TSDB, это не TSDB в полном смысле этого слова (если он вообще есть).

Dmitry
17.03.2017
16:14:41
так же подумал, что возможно стоить делать два столбца key и key_value. Оба столбца типа Array. Данные класть по порядку. Те изначально имеем {'key1': 'val', 'key2': 'val2'}. Писать соотвесвенно в key ['key1', key2] а в key_value ['val', 'val2'] и как то призапросе с помощью indexOf или arrayEnumerate их сравнивать
кроме всего прочего там будет и другие данные касаемо метаданных запросов и так же уникальные идентификаторы запросов
там идея гораздо глобальнее обычной TS типа Prometheus или Influx
возможно путаю с вертикой
есть еще вариант не раскладывать тэги а держать их в одной строке и разгребать через splitByChar
но это как мне кажется фигня какаето

papa
17.03.2017
17:10:37

Google

prll
17.03.2017
17:23:46

Dmitry
17.03.2017
17:25:37

Alexey
17.03.2017
17:34:25
Алексей, а как правильно починить mrk файлы?
Здесь два варианта. Первый вариант - в таблице ещё есть кусок с неправильными .mrk файлами. Второй вариант - при запуске сервера, этот кусок был признан повреждённым и был перенесён в директорию broken.
Сначала рассмотрим первый вариант:
1. Создать таблицу типа Log такой же структуры, как ваша таблица MergeTree.
2. Вставить туда все данные из вашей таблицы (либо только данные из повреждённых партиций) с помощью INSERT INTO table_log SELECT * FROM table. Перед запросом выставить SET max_threads = 1, merge_tree_uniform_read_distribution = 0
По сути, это бэкап ваших данных.
3. Установить новую версию сервера. Перезапустить сервер. Удалить или сделать DETACH повреждённых данных в таблице MergeTree. Вставить данные из таблицы типа Log, которые мы сохранили на предыдущем шаге.


Peter
17.03.2017
18:03:58
Добрый день, я пробую создать VIEW с запросом с JOIN двух таблиц, и когда создаю, сразу вставка данных в эти таблицы выдает: "DB::Exception: Not found column value in block. There are only columns:", с чем это может быть связано? Или VIEW должен создаваться только над одной таблицей?

Bohdan
17.03.2017
18:06:22
Добрий день

Peter
17.03.2017
18:29:17
Я пробовал и MATERIALIZED VIEW и обычный и в двух случаях такая ошибка, при вставке в таблицы которые задействованные в запросе для VIEW. Хотя сам VIEW создаеться и работает нормально. Может я что-то не так делаю, создаю таким запросом: https://paste.ofcode.org/32wm2DtaXLwxZeSrpq2VfZp

Dmitry
17.03.2017
18:34:11
можно пример вставки который выдаёт ошибку?

Вася
17.03.2017
18:50:22


Peter
17.03.2017
18:53:08
можно пример вставки который выдаёт ошибку?
INSERT самый простой, и за раз вставка до 1к строк
INSERT INTO adverts_stats (integration,date,account_id,campaign_id,advert_id,keyword_id,keyword,spent,currency,impressions,clicks,reach,frequency) VALUES ('google-adwords','2017-03-17','1148492832','676317588','148953584045','58335222311','boomuserlist::3555311',0,'UAH',3,0,3,1)
И выдает:
[10] DB::Exception: Not found column value in block. There are only columns: integration, date, account_id, campaign_id, advert_id, keyword_id, keyword, spent, currency, impressions, clicks, reach, frequency, cpm, cpi, cpc, cpp, ctr, day, month, year
Вставка идет в таблицу: https://paste.ofcode.org/342mTweNeJWSyCQUexxAnRD

Vladimir
17.03.2017
23:48:42

Igor
18.03.2017
13:37:02
а фича-то почему (

Pavel
18.03.2017
21:07:03
!stats

Vladislav
18.03.2017
21:37:41
Кто-нибудь сталкивался со следующим исключением: Element of set in IN or VALUES is not a constant expression: toDate
делаю вставку через JDBC 30000 строк (каждая строка с колонокой Date и колонкой Array(String))
Иногда попадаю на это исключение, иногда нет...
Да, в value передаётся (toDate(now()), [array])
где на месте array некоторый строковый массив

Bob
18.03.2017
21:41:47


Vladislav
18.03.2017
21:56:53
такое ощущение, будто clickhouse как-то неудачно парсит выражения и иногда отрезает кусок от toDate или today() функций

Google

Vladislav
18.03.2017
21:57:33
Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: tod
Code: 36, e.displayText() = DB::Exception: Element of set in IN or VALUES is not a constant expression: t
Два разных прохода, одни и те же данные
Ещё на нескольких всё прошло нормально
/stat@combot

Combot
18.03.2017
23:35:38
combot.org/chat/-1001080295593

Alexey
19.03.2017
07:32:20
такое ощущение, будто clickhouse как-то неудачно парсит выражения и иногда отрезает кусок от toDate или today() функций
Так и есть. Обычно INSERT предназначен для вставки готовых данных в заданном формате и не умеет выполнять выражения (такие как toDate(now()) или то же самое - today()). В качестве исключения, возможность выполнять выражения, была добавлена в формат Values. Но эта возможность добавлена в очень ограниченном виде. Во-первых, производительность вставки будет очень низкой. Во-вторых, она работает в пределах размера данных, помещающихся в буфер (~1 МБ), и в случае большего размера, выдаётся недостаточно хорошая диагностика - именно это вы наблюдаете.
Поэтому я предлагаю всё-таки указывать конкретное значение даты в виде '2017-03-19'.


Иван
19.03.2017
08:09:52
Доброго времени суток. Есть distributed табличка, которая смотрит на на три таблички на других серверах. Пишу insert ручками в distributed таблицу - клиент пишет, что все хорошо, вставлена одна запись, однако селект мне не возвращает данные...( При вставке непосредственно в таблицы все хорошо, селект все возвращает. В чем может быть проблема?

Alexey
19.03.2017
08:12:13
После вставки в Distributed таблицу, отправка данных на удалённые серверы производится полностью асинхронно. Если при отправке возникает ошибка, её следует смотреть в логе отправляющего сервера.

Геннадий
19.03.2017
08:46:04

Dmitry
19.03.2017
08:58:30
Нет
А вам нужно распределение по ключу шардирования?

Геннадий
19.03.2017
09:12:24
у нас rand() стоит