
Евгений
17.07.2018
11:36:29

Alexey
17.07.2018
11:37:55
почему, можно и джойн
просто если у вас есть таблица1, в которой например 100 строк по вашим условиям, и вы заджойните ее на таблицу2 без условий, а в ней например 10000000 строк, то сначала в подзапросе обработается полностью таблица2, ее результат в оперативу, и заджойнится на таблицу1

Евгений
17.07.2018
11:39:56
Спасибо за помощь. Попробую

Google

Alexey
17.07.2018
11:41:09
насколько я помню, JOIN с пробросом условий, аналог sql, обещали сделать, планировали в разработку

Vsevolod
17.07.2018
11:41:40
есть такой глупый вопрос по distributed: допустим, у меня есть 100-200 нод (без реплик), в каждой 100к записей за сутки примерно, и я хочу сделать ко всему этому запрос с group by (в результате выборки будет 100-1000 записей). вопрос заключается в том, как будет расходоваться память на ноде, которая будет делать аггрегацию с этой distributed таблицы

Alex
17.07.2018
11:42:22

Vsevolod
17.07.2018
11:42:56
то есть, оценка примерно n_groups * n_nodes?

Alex
17.07.2018
11:43:04
и "прожорливость" будет зависеть от того, сколько уникальных ключей агрегации будет, и насколько тяжелые до памяти там агрегатные функции

Vsevolod
17.07.2018
11:43:36
но основная тяжесть ляжет на ноды distributed, а не на ноду, которая эти данные аггрегирует - так?

Alex
17.07.2018
11:43:38
например select count() from distributed group by uint8_typed_field до памяти не жручая

Vsevolod
17.07.2018
11:44:08
у меня проблема усугубляется тем, что я храню данные в нескольких таблицах и иногда нужен join / array join

Alex
17.07.2018
11:44:18

Vsevolod
17.07.2018
11:44:27
понятно, спасибо

Антон
17.07.2018
11:44:47
Ребят, подскажите пожалуйста, как транспонировать таблицу?

Vladimir
17.07.2018
11:47:09

Stanislav
17.07.2018
11:48:26
Вы получаете результат сжатым потоком в http, curl разжимает. Хотите архива - архивируйте самостоятельно.

Google

Vladimir
17.07.2018
11:50:21

Stanislav
17.07.2018
11:50:30
опция curl -v
Ну или через tcpdump словить

Vladimir
17.07.2018
11:51:38
опция curl -v
Спасибо, попробую из терминала сделать (на скрине постман)
опция curl -v
Да, в терминал возвращается кракозябра.. Значит это постман сам разжимает. Спасибо!

Kirill
17.07.2018
11:54:00
или tcpdump'ом поиграйтесь если недоверяете

Александр
17.07.2018
14:11:20
Запрос болтался в system.process а потом пропал но консольный client который его выполнял не отвалился - куда смотреть что случилось не так ?
в system.query_log его нет

Anton
17.07.2018
14:23:55
Всем привет! Есть сложности с подключением Talend Open Studio (Data Integration) к КХ: в error message видно только java.lang.NoSuchMethodError: java.nio. На этом же .jar через jdbc нормально подключается DBeaver. Кто-нибудь сталкивался с таким?

Daniel
17.07.2018
16:12:04
Что случается при превышении max_memory_usage_for_all_queries или max_memory_usage_for_user ? Или КХ просто не даст до такого дойти, будет порционно обрабатывать данные?

GithubReleases
17.07.2018
16:22:54
yandex/ClickHouse was tagged: v1.1.54394-stable
Link: https://github.com/yandex/ClickHouse/releases/tag/v1.1.54394-stable
Release notes:
Auto version update to [54394]

Vladimir
17.07.2018
16:24:44
привет. а никаких идей для обхода использования констант в функциях при работе со строками нет?

Alexey
17.07.2018
16:43:07
в system.query_log его нет
system.query_log по-умолчанию выключен. Включается отдельно - настройкой log_queries уровня пользователя. Эту настройку можно прописать для всех - в users.xml в профиле default.

Александр
17.07.2018
16:45:26

Evgeny
18.07.2018
07:47:03
Добрый день
Скажите пожалуйста, а можно как-то сделать выборку с match, где регулярку брать из поля, не константой?

Alexander
18.07.2018
07:49:03
добрый день
Да, можно
просто вместо регулярки делаете select
результатом SELECT должен быть текст регулярного выражения

Google

Evgeny
18.07.2018
07:51:25
А как потом передать это в матч?

Alexander
18.07.2018
07:55:07

Evgeny
18.07.2018
07:56:47
А, я понял, спасибо. Я думал выбрать из таблицы с условием match(column1, joinedColumn)

molo4ko
18.07.2018
09:35:18
а почему IN требует GLOBAL, если во вложенном запросе выбирать колонку, которая является ключом шардирования?

Denis
18.07.2018
09:38:34
так вам нужны все результаты или с шарда только?

molo4ko
18.07.2018
09:45:46
все, но логично предположить, что каждый шард можем сам целиком посчитать для себя

Firej
18.07.2018
10:00:45
товарищи, а вот у меня если есть пара таблиц, в каждой по миллиарду записей, есть смысл делать запросы с джойнами этих таблиц? 1-к-1
поле по которому джойнить называется в двух таблицах по разному, поэтому интересно до того как буду приниматься за переименование - есть ли смысл

Tima
18.07.2018
10:08:13

Firej
18.07.2018
10:08:38
ну да, будет ли работать за адекватное время - за пару минут хотя бы

Tima
18.07.2018
10:18:39
Пробуйте, без дополнительных вводных ничем помочь не сможем

Ivan
18.07.2018
11:08:16
Привет!
Хочу соптимизировать подключения к ClickHouse
приложение работает на базе SpringBoot и использует последнюю сборку jdbc драйвера, но на сколько я понимаю - все запросы все равно выполняются по шттп?
думаю как быть с коннекшен пулом. имеет смысл что то химичить или смысла нет

Alexey
18.07.2018
11:14:59

Antony
18.07.2018
11:45:32
Всем привет! Есть ли возможность в запросе написать нечто вроде - any(*), что бы не оборачивать каждый аргумент пр агрегированных запросах??

Denis
18.07.2018
12:06:28

Tima
18.07.2018
12:37:25
Есть таблица a1 в mysql, есть таблица a2 в КХ, которая смотрит на таблицу a1 в mysql. И в a1 есть поле типа Enum, которое может быть Null. При попытки обратиться к таблице a2 пишет ошибку
Unsupported type Enum8('promo' = 1, 'flashPromo' = 2)
Попытался при создании таблицы a2 обернуть поле в Nullable, поиграться со значениями самого enum - не помогает. Есть вариант обойти?

Denis
18.07.2018
12:43:08
Enum8(null=-1, 'promo' = 1, 'flashPromo' = 2) ?
у меня вот такая конструкция при загрузке данных
replaceOne(ifNull(eventtype,''),'null','')
null значения преобразовываются в строки нулевой длины сначала. а потом уже столбец в enum

Google

Tima
18.07.2018
12:46:48

Denis
18.07.2018
12:47:21
а ''=-1 ?
но понадобится преобразование скорее всего, которое выше

Tima
18.07.2018
12:48:22
а ''=-1 ?
Unsupported type Enum8('promo' = -1, 'flashPromo' = 2, '' = 3)

Antony
18.07.2018
12:49:25
Скорее всего нет, КХ "не любит" *
Возможно есть какой-либо способ взять строки только с максимальной версией (отдельное поле) , что-то вроде того: SELECT *
FROM test.transactions AS t1
WHERE version = (
SELECT MAX(version)
FROM test.transactions AS t2
WHERE t1.tran_id = t2.tran_id
) AS tmp

Denis
18.07.2018
12:50:00
у меня это как раз в запросе создания таблцы. только у меня она из log таблицы создаётся. как вы из mysql достаёте я не знаю.
cast(replaceOne(ifNull(eventtype,''),'null','') as Enum8 ('' = 0, 'mytype' = 1)) as eventtype,

Tima
18.07.2018
12:51:06
Code: 62, e.displayText() = DB::Exception: Syntax error: failed at position 533 (line 22, col 7): (
replaceOne(
ifNull(usedPromocodeType, ''),
'null',
''
) as Enum8 ('' = 0, 'promo' = 1, 'flashPromo' = 2)
) as usedPromocodeT. Expected one of: identifier with optional parameters, function, DEFAULT, MATERIALIZED, ALIAS, nested table, identifier with parameters, identifier, e.what() = DB::Exception
Спасибо за советы, похоже проще отказаться от Enum


Denis
18.07.2018
13:16:42
так этот подход работает, когда вы mergetree создаёте как селект из другой (log/mysql) таблицы
то есть мускульную таблицу как строку создаёте и делаете импорт в мерджтри

Tima
18.07.2018
13:18:20

Denis
18.07.2018
13:28:59
вручную догружать insert as select

Dmitry
18.07.2018
13:31:55
Коллеги, в документации написано, что в таблицы BUFFER не имеет смысла вставлять по одной строке, производительность не будет оптимальна; а вот к какому размеру вставляемых данных стремиться, не сказано.
Сориентируйте, пожалуйста.
Сейчас у нас по факту вставляется от, скажем, 3 до 300 строк за раз, и таких вставок, наверное, штук 50-60 в секунду (в разные буферные таблицы в сумме).
И ещё интересно - если ничего не менять, с какого количества инсертов в секунду мы упремся в потолок, при текущем размере инсерта?
То есть, насколько мы далеко от проблем)

Vladimir
18.07.2018
13:32:06
Всем привет, а есть ли способ оценить необзходимое значение настройки max_result_bytes, кроме как опытным путём?

Dmitry
18.07.2018
13:36:19
Коллеги, в документации написано, что в таблицы BUFFER не имеет смысла вставлять по одной строке, производительность не будет оптимальна; а вот к какому размеру вставляемых данных стремиться, не сказано.
Сориентируйте, пожалуйста.
Сейчас у нас по факту вставляется от, скажем, 3 до 300 строк за раз, и таких вставок, наверное, штук 50-60 в секунду (в разные буферные таблицы в сумме).
И ещё интересно - если ничего не менять, с какого количества инсертов в секунду мы упремся в потолок, при текущем размере инсерта?
То есть, насколько мы далеко от проблем)
Упс, то были искаженные данные.
На самом деле от 1 до 50 строк инсерт, инсертов около тысячи в секунду. Но это всё в буферные таблицы. Параметры этих таблиц - по умолчанию.

Google


Tima
18.07.2018
13:57:19
Коллеги, в документации написано, что в таблицы BUFFER не имеет смысла вставлять по одной строке, производительность не будет оптимальна; а вот к какому размеру вставляемых данных стремиться, не сказано.
Сориентируйте, пожалуйста.
Сейчас у нас по факту вставляется от, скажем, 3 до 300 строк за раз, и таких вставок, наверное, штук 50-60 в секунду (в разные буферные таблицы в сумме).
И ещё интересно - если ничего не менять, с какого количества инсертов в секунду мы упремся в потолок, при текущем размере инсерта?
То есть, насколько мы далеко от проблем)
А кто формирует блоки "3 до 300 строк"? Может там стоит сделать батчинг до 1к и не использовать Buffer вообще? Я выработал правило для КХ (и не только) - делай как можно проще. Если написано в доке что лучше не использовать Buffer, а батчить на стороне приложения - делаю так
Мы сейчас вообще на Раббите сделали цепочку очередей и гоняем данные разных стадий готовности (по одной записи). И только на финальном этапе батчим как нам удобно - шикарно работает


Konstantin
18.07.2018
14:02:39
господа, приветствую. извините за беспокойство, но никто не поделится клиентом под osx? билдить я его вечность буду на своем ноуте, из homebrew ставится нерабочий. быть может, у кого-то есть уже собранный?

Kirill
18.07.2018
14:05:57

Alexander
18.07.2018
14:07:08
Например, через tabix