
Ivan
18.04.2018
11:23:20
тоже смотрю на КХ, но от меня требуют реал тайм стату

Kirill
18.04.2018
11:26:00
У нас был Citus, просто выкиньте его и забудьте про него навсегда.

Ivan
18.04.2018
11:27:26

Kirill
18.04.2018
11:28:57

Google

Kirill
18.04.2018
11:29:45
Если хочется развесистый SQL и "бесплатно" - берите Greenplum

Гаврилов
18.04.2018
11:30:54
я попробовал Greenplum, чтото он был по скорости на уровне постгреса

Ivan
18.04.2018
11:31:24


Kirill
18.04.2018
11:31:45
Тестирую citusdb 7.3 - координатор + 2 ноды(2ядра + 8GB памяти)
select version();
version
—-------------------------------------------------------------------------------------------------------
PostgreSQL 10.3
залил около 500млн записей.
select count(*) from stats;
count
—---------
487829597
развернутая статистика
EXPLAIN ANALYZE select count(*) OVER() as pg, offers.name, count(*) as cn, usoffer_id, SUM(stats.rpa) AS rpa, country_id, browser_id, os_id, SUM(stats.cpa) AS cpa , subid, subid2, subid3 from stats left join offers ON (stats.offer_id = offers.id) WHERE usoffer_id = 216 and subid like '%y%' group by usoffer_id , country_id, browser_id, os_id, subid, subid2, subid3, offers.name ORDER BY subid DESC LIMIT 100;
QUERY PLAN
—----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Custom Scan (Citus Router) (cost=0.00..0.00 rows=0 width=0) (actual time=4584.743..4584.762 rows=100 loops=1)
Planning time: 0.256 ms
Execution time: 5569.834 ms
Planning time: 1.398 ms
Execution time: 4584.815 ms
Примерно тоже количество записей и COUNT на КХ
SELECT count()
FROM events
WHERE action_date = today()
┌───count()─┐
│ 592245274 │
└───────────┘
1 rows in set. Elapsed: 0.154 sec. Processed 592.40 million rows, 1.18 GB (3.83 billion rows/s., 7.67 GB/s.)


Ivan
18.04.2018
11:34:11
Кирилл как часто заливаете в КХ данные?

Wolf
18.04.2018
11:34:38
да в него можно непрерывно заливать слава богу )

Kirill
18.04.2018
11:34:43

Sergei
18.04.2018
11:39:57

Гаврилов
18.04.2018
11:50:52
1 тб данных

Sergei
18.04.2018
11:51:24

Гаврилов
18.04.2018
11:51:39
ну он вроде как поколоночный

Google

Гаврилов
18.04.2018
11:51:52
обещают х2-х3 скорости при посчете циферок

Sergei
18.04.2018
11:52:04
все ж зависит от запроса еще

Гаврилов
18.04.2018
11:52:26
ну значит не судьба)
я 1 день поигрался
да пошел следующее решение искать

Daniel
18.04.2018
11:53:42
напомните плиз, если был zk-ансамбль из 3 нод и одна отвалилась, будет ли на двух оставшихся работать репликация CH?

Wolf
18.04.2018
11:54:21
конечно в этом и суть

Stanislav
18.04.2018
11:54:43
будет-будет. Наступлено уже :-)

Ilya
18.04.2018
11:55:15
/stat@combot

Combot
18.04.2018
11:55:16
combot.org/chat/-1001080295593

Sergey
18.04.2018
11:59:53
Всем привет. А не подскажете, как мне сджоинить массивы внутри ячеек?
Есть таблица, в ячейках которой имеются массивы с айдишниками (UInt32). Также есть таблица соответствия этих айдишников (UInt32) их неймам (String)
Необходимо сделать так, чтобы в массивах ячеек были не ИДы, а строки.

Maksim
18.04.2018
12:02:30
привет всем
ClickHouse server version 1.1.54378
WHERE по UInt8 у одного меня не работает?
SELECT channel_id
FROM wf.log_session_details_ex
WHERE log_date IN ('2018-03-31', '2018-04-01')
LIMIT 10
┌─channel_id─┐
│ 3 │
│ 3 │
│ 2 │
│ 3 │
│ 2 │
│ 3 │
│ 3 │
│ 3 │
│ 3 │
│ 3 │
└────────────┘
но
SELECT channel_id
FROM wf.log_session_details_ex
WHERE (log_date IN ('2018-03-31', '2018-04-01')) AND (channel_id = 3)
LIMIT 10
Ok.
0 rows in set. Elapsed: 0.006 sec.

Daniel
18.04.2018
12:05:50

Stanislav
18.04.2018
12:06:54
Виртуалки о двух ядрах и двух гб памяти.
1.5Гб памяти свободно

Wolf
18.04.2018
12:07:45

Maksim
18.04.2018
12:08:08
вы сразу пишите размер вашего снапшота

Stanislav
18.04.2018
12:08:25
А... Ну да. 72Мб :-)

Google

Vitaliy
18.04.2018
12:25:23
Как можно указать ганулярность при "PARTITION BY"?

papa
18.04.2018
12:26:07
при partition by вы указываете выражение от строки, вот у него и должна быть нужная гранулярность.

Stanislav
18.04.2018
12:26:31
PARTITION BY toMonday(date)

Vitaliy
18.04.2018
12:26:46
это не то
грануальность индекса
а не 8192, как в коробке где-то прописано

Maksim
18.04.2018
12:28:44
в SETTINGS можно указать index_granularity (не обязательно, значение по умолчанию 8192)

LeiDruid
18.04.2018
12:29:39
Товарищи, а подскажите, имеет ли значение порядок полей в индексе ?
Сейчас вот так:
MergeTree(EVENT_DATE_INDEX, (EVENT_DATE_INDEX, USER_ID))
Говорят, что если сделать вот так:
MergeTree(EVENT_DATE_INDEX, (USER_ID,EVENT_DATE_INDEX))
то будет быстрее
Кожно-жопные ощущения подсказывают, что это не так

Ivan
18.04.2018
12:31:54

LeiDruid
18.04.2018
12:33:20
т.е. магия существует? Лааадно

Kirill
18.04.2018
12:33:51

Vyacheslav
18.04.2018
12:34:38
вообще это не от запроса больше должно зависеть, а от данных, кмк

LeiDruid
18.04.2018
12:35:41
спасибо

Vyacheslav
18.04.2018
12:36:09
аха, по ссылке подтверждается
т.е. при более удачной комбинации полей сжатие будет более эффективное. что привед к понятным последствиям

Ivan
18.04.2018
12:39:08
А я понял иначе, что запросы по полю которое находится первым в ключе будут выполнятся быстрее нежеле запросы по второму

Vyacheslav
18.04.2018
12:42:37
(EVENT_DATE_INDEX, USER_ID) vs (USER_ID,EVENT_DATE_INDEX)
т.е. предполагается выбирать по разным USER_ID всегда от начала времен до текущего момента?

Google

Vyacheslav
18.04.2018
12:43:34
ну хозяин барин

Denis
18.04.2018
12:43:37

Maksim
18.04.2018
12:45:28

Ivan
18.04.2018
12:46:02

Harry
18.04.2018
12:46:25

Vyacheslav
18.04.2018
12:47:30

Alexey
18.04.2018
12:48:04
А если это командировочники?

Ivan
18.04.2018
12:48:23

Vyacheslav
18.04.2018
12:48:28
40 тыщ одних курьеров, да!
я не придираюсь, а показываю что если не теоретезировать, а брать действительно реальные структуры то все обычно предельно однозначно на уровне самих данных, а не запросов

Kirill
18.04.2018
12:50:23

Denis
18.04.2018
12:50:32
сломано видимо тут 1.1.54362
...Использование индекса таблиц семейства MergeTree при наличии условия IN на кортеж от выражений от столбцов первичного ключа.
попробуйте так
WHERE toString(log_date) IN ('2018-03-31', '2018-04-01')

Maksim
18.04.2018
12:51:53
но спасибо

LeiDruid
18.04.2018
12:52:08
А подскажите ещё best practice по замене полей в первичном ключе ?
Обязательно ли пересоздавать а потом insert from select или есть более цивилизованный способ ?

Kirill
18.04.2018
12:54:23

LeiDruid
18.04.2018
12:55:45
хм.
ну у меня сейчас
PRIMARY KEY (p, k)
мне надо
PRIMARY KEY (k, p)
Прокатит ?

Kirill
18.04.2018
12:56:08


Denis
18.04.2018
12:56:14
SELECT channel_id
FROM wf.log_session_details_ex
WHERE (channel_id = 3 ) AND (toString(log_date) IN ('2018-03-31', '2018-04-01'))
LIMIT 10
Ok.
0 rows in set
Значит еще что-то сломали, делайте минимальный тест и заводите issue.
Там вагон косяков, я нашел баг, который вообще то неправильный результат, то ошибку возвращает, 50/50
https://github.com/yandex/ClickHouse/issues/2147
CREATE TABLE trololo (a date, b Int, c Int) ENGINE = MergeTree order by (a,b);
INSERT INTO trololo VALUES (0, 1, 3);
SELECT * FROM trololo WHERE (a, b) IN (SELECT (a, b) FROM trololo)
Code: 169. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Bad type of Field.
second execution (wrong result):
SELECT * FROM trololo WHERE (a, b) IN (SELECT (a, b) FROM trololo)
0 rows in set. Elapsed: 0.003 sec.
third: Ok. 0 rows in set. Elapsed: 0.003 sec.
forth: Code: 169. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Bad type of Field.

Google

Ivan
18.04.2018
12:57:28


Maksim
18.04.2018
12:57:52
Значит еще что-то сломали, делайте минимальный тест и заводите issue.
Там вагон косяков, я нашел баг, который вообще то неправильный результат, то ошибку возвращает, 50/50
https://github.com/yandex/ClickHouse/issues/2147
CREATE TABLE trololo (a date, b Int, c Int) ENGINE = MergeTree order by (a,b);
INSERT INTO trololo VALUES (0, 1, 3);
SELECT * FROM trololo WHERE (a, b) IN (SELECT (a, b) FROM trololo)
Code: 169. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Bad type of Field.
second execution (wrong result):
SELECT * FROM trololo WHERE (a, b) IN (SELECT (a, b) FROM trololo)
0 rows in set. Elapsed: 0.003 sec.
third: Ok. 0 rows in set. Elapsed: 0.003 sec.
forth: Code: 169. DB::Exception: Received from localhost:9000, ::1. DB::Exception: Bad type of Field.
так вроде у меня проблема 1в 1 с https://github.com/yandex/ClickHouse/issues/2146

Denis
18.04.2018
12:59:07

Kirill
18.04.2018
13:05:48

Ivan
18.04.2018
13:07:15

Alex
18.04.2018
13:09:52
Как это может работать? :) Если добавить в ключ новое поле, а данные в кусках не обновить, то мержи могут выдавать неправильный результат.

Kirill
18.04.2018
13:13:29

Alex
18.04.2018
13:17:26
А, да, есть такое. Но эта функциональность спрятана, потому что у неё довольно много ограничений.

Kirill
18.04.2018
13:19:24
Она не только спрятана, но и сломана для нового формата MergeTree

Alex
18.04.2018
13:19:49
Функциональность реализована в минимальном виде и работает только при следующих условиях:
Таблица не реплицированная.
В таблице нет ключа сэмплирования.
Если добавляемый столбец уже существовал в таблице, то он должен иметь все значения, равные нулям или пустым строкам. Если столбец добавляется в таблицу одновременно с изменением первичного ключа (рекомендуется), то для него не должно быть задано значения по-умолчанию, или не должно быть значения по-умолчанию, отличного от нулей и пустых строк.
При этом, некоторые условия явно не проверяются и при их невыполнении, что-нибудь сломается.

Michal
18.04.2018
13:20:01
Сейчас обнаружил странное поведение. Селект с тремя подселектами на пользователе readonly всегда возвращает 131073 строк. На пользователе без readonly - правильное количество (>131073) строк. Никакой ошибки и т.п.

Alex
18.04.2018
13:20:12

Michal
18.04.2018
13:20:29
system.settings отличается только в пункте readonly
Это баг или фичер? Если фичер - как это регулировать?

LeiDruid
18.04.2018
13:27:10
Кто в курсе, когда планируется возможность указывать разные каталоги для бд?

Александр
18.04.2018
13:30:48
А через clickhouse-client как то можно передать query_id? Или это только через http интерфейс работает?

M
18.04.2018
13:31:04
в последней версии вродь можно

Kostya
18.04.2018
13:31:23
Да, недавно чинили это

Александр
18.04.2018
13:32:10