@clickhouse_ru

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

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

Kirill
18.04.2018
11:28:57
очень аргументированно :)
1) Он глючный чуть более чем полностью 2) Медленный

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

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

Ivan
18.04.2018
11:31:24
1) Он глючный чуть более чем полностью 2) Медленный
Медленный в чем ? какую версию тестировали?

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
1 нода, 2 ядра 4 гига)
ну так понятно почему тогда, там же тот же постгрес

Гаврилов
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
будет-будет. Наступлено уже :-)
спасибо! а какие у вас сервера под ZK стоят по железу? вообще вопрос ко всем)

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

1.5Гб памяти свободно

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)) то будет быстрее

Кожно-жопные ощущения подсказывают, что это не так

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

Kirill
18.04.2018
12:33:51
Товарищи, а подскажите, имеет ли значение порядок полей в индексе ? Сейчас вот так: MergeTree(EVENT_DATE_INDEX, (EVENT_DATE_INDEX, USER_ID))
Да https://groups.google.com/forum/#!searchin/clickhouse/%D0%B8%D0%BD%D0%B4%D0%B5%D0%BA%D1%81%7Csort:relevance/clickhouse/eUrsP30VtSU/p4-pxgdXAgAJ

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
ну хозяин барин

Maksim
18.04.2018
12:45:28
https://github.com/yandex/ClickHouse/issues/2146 https://github.com/yandex/ClickHouse/issues/2188
SELECT channel_id FROM wf.log_session_details_ex WHERE (log_date = '2018-04-01') AND (channel_id = 3) LIMIT 10 ┌─channel_id─┐ │ 3 │ │ 3 │ │ 3 │ │ 3 │ │ 3 │ │ 3 │ │ 3 │ │ 3 │ │ 3 │ │ 3 │ └────────────┘ спасибо, дело действительно в in

Ivan
18.04.2018
12:46:02
(EVENT_DATE_INDEX, USER_ID) vs (USER_ID,EVENT_DATE_INDEX)
я скорее имел в виду случай (event_date, user_id, country) vs (event_date, country, user_id) и выборка идёт в одном случае по дате и стране а в другом случае по дате и пользователю

Harry
18.04.2018
12:46:25
(EVENT_DATE_INDEX, USER_ID) vs (USER_ID,EVENT_DATE_INDEX)
у себя проверял в 5 раза дольше в 1 варианте

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')

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

Kirill
18.04.2018
12:54:23
А подскажите ещё best practice по замене полей в первичном ключе ? Обязательно ли пересоздавать а потом insert from select или есть более цивилизованный способ ?
Есть, если добавлять/удалять колонки из ключа в конце (т.е. это не должно приводить к пересортировке данных) - ALTER TABLE t MODIFY PRIMARY KEY (p, k)

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
Denis
18.04.2018
12:59:07
так вроде у меня проблема 1в 1 с https://github.com/yandex/ClickHouse/issues/2146
а ну ок. Я думал его в v1.1.54377 починили, видимо еще нет.

Kirill
18.04.2018
13:05:48
А возможно например для SummingMergeTree добавить колонку и записать её в конец ключа?
Да, но это работает только для таблиц в старом формате, т.е. не для тех что созданы с PARTITION BY/ORDER BY, для них, как оказалось, это сломано @ztlpn

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

Kirill
18.04.2018
13:13:29
Как это может работать? :) Если добавить в ключ новое поле, а данные в кусках не обновить, то мержи могут выдавать неправильный результат.
На это даже тест написан https://github.com/yandex/ClickHouse/blob/1d836b2bf8fef378d47258957ff74ed3a4aff136/dbms/tests/queries/0_stateless/00329_alter_primary_key.sql :)

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) строк. Никакой ошибки и т.п.

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
в последней версии вродь можно
Блин, не могу до последней версии :( Там регрессия жуткая при обработке подзапросов (

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