
Александр
12.09.2018
08:32:41

Alex
12.09.2018
08:32:41

George
12.09.2018
08:32:46

Google

Александр
12.09.2018
08:33:10

George
12.09.2018
08:33:21

Александр
12.09.2018
08:34:11
одна партиция
Если в ней будет несколько кусков, то будет параллелить
Агрегация вроде бы тоже параллелится

George
12.09.2018
08:35:33
окей. Есть какой-либо тулз, который подсказывает как оптимизировать запросы?
или кликхаус достаточно умен сам по себе?

Wolf
12.09.2018
08:36:09

Александр
12.09.2018
08:36:23
Тулзы нет, но есть логи в которых кажет конвейер выполнения запроса

George
12.09.2018
08:37:22

Александр
12.09.2018
08:37:28
А вообще если глянуть видяшки про устройство mergetree, то там все понятно будет

Google

Kirill
12.09.2018
08:37:56
Есть подзапрос, который необходимо использовать в нескольких запросах, но с разными параметрами. Подскажите, пожалуйста, есть ли в clikhouse возможность создать view с параметрами или может обернуть запрос в функцию таким образом, чтобы не писать в каждом запросе один и тот же подзапрос?
Параметры берутся из приложения и подставляются в текст запроса.

Александр
12.09.2018
08:39:43
Точнее его пока нет
А в with вроде бы работает, но я не тестил

Alex
12.09.2018
08:40:11

Илья
12.09.2018
08:40:23
Подскажите, пожалуйста, синтаксис для создания таблицы с движком merge, по доке не соображу никак :(

Александр
12.09.2018
08:41:09

Илья
12.09.2018
08:41:52

Александр
12.09.2018
08:42:09
Я прочитал merge tree

Alex
12.09.2018
08:43:02
create table table_name as одна_из_таблиц_для_Merge ENGINE = Merge(database, 'pattern');

Илья
12.09.2018
08:43:15

Konstantin
12.09.2018
08:54:51
вопрос открыт
Имеет ли смысл под значения с id использовать int если стринги все равно хешируются, и уникальных значений этих Id планируется пару десятков. В общем,у меня вопрос цены удобства 1345 или "Вася"?

Ivan
12.09.2018
09:08:00

Konstantin
12.09.2018
09:08:20
?

Илья
12.09.2018
09:08:51
Подскажите, если я делаю партиционирование таблицы по полю, нужно ли его включать в order by?

Tima
12.09.2018
09:10:00
И ещё баг
https://github.com/yandex/ClickHouse/issues/3111

Google

Илья
12.09.2018
09:11:07

Vladimir
12.09.2018
09:13:16
@konstantin_ptr по low cardinality string, подскажите, это уже вошло в какой либо релиз(и в какой возможно войдет)? https://github.com/yandex/ClickHouse/blob/master/CHANGELOG.md
Здесь последний 18.6.0 и про эту фичу ни слова пока.

Tima
12.09.2018
09:13:44
Если у вас партиции по одному полю, а в первичном ключе (ORDER BY) другие поля. И в запросе есть условие на партиции и первичный ключ, тогда КХ сначала выберет нужные партиции, а дальше будет искать с использованием первичног ключа уже конкретных партиций

Konstantin
12.09.2018
09:14:13

Ivan
12.09.2018
09:15:49

Илья
12.09.2018
09:16:01

Vladimir
12.09.2018
09:16:44
Отличная новость! Спасибо!

Konstantin
12.09.2018
09:18:13
странно, только вчера развернул кликхаус)

Tima
12.09.2018
09:21:35

Андрей
12.09.2018
09:31:56
Подскажите пожалуйста, есть 3 шарда(по 2 реплики каждый), на каждый смотрит распределенная таблица со своим ключом. При попытке вставить данные на первом шарде в распределенную таблицу данные улетают на второй, соответственно данные на первом и третьем шарде не появляются. Возможна ли запись на три шарда одновременно через распределенные таблицы?
Запрос
cat /tmp/customer.csv | clickhouse-client --host=ch-shard01 --database=dfoodmart --query="INSERT INTO customer FORMAT CSV";

Илья
12.09.2018
09:56:48
прошу прощения за глупый вопрос, а как вместо toYYYYMM(event_date) задать хранение партицы по неделям? и норм ли будет 48 партиц?

Tima
12.09.2018
10:13:19

Илья
12.09.2018
10:14:06

Tima
12.09.2018
10:16:10
Вам нужно чтобы даты округлялись до начала недели?
Так 2018-09-12 -> 2018-09-10 ?

Alex
12.09.2018
10:17:54
можно toMonday(event_date)
48 партиций нормально

Илья
12.09.2018
10:26:41

Андрэ
12.09.2018
10:27:04
парни, если у меня новая реплика ругается Can not clone replica, because the 172.16.100.158 updated to new ClickHouse version При этом на обоих репликах select version() выдает 18.12.13 - куда мне покопать?

Илья
12.09.2018
10:29:19
крайний вопрос... планирую создать в таблице поле Nested (хранить ключ-значение). Вопрос в том, насколько хорошо будут сжиматься данные? они будут сжиматься по каждой строчке в Nested, либо по полю целиком? В ORDER BY насколько я понимаю можно добавить ведь только название Nested столбца?

Vladimir
12.09.2018
10:29:41
48 партиций нормально
Подскажите, а в чем опасность бОльшего кол-ва партиций? Для повседневного бекапа очень удобно партиции по дням делать, что породит 365 партиций в год - могут быть какие-то проблемы?

Google

Alex
12.09.2018
10:32:31
Запросы, затрагивающие большое число партиций, будут работать неэффективно - будет много непоследовательных чтений с диска.

Илья
12.09.2018
10:55:39
в общем указал в order by nested.value, бум надеяться, что ClickHouse будет сжимать данные по нему :)

Denis
12.09.2018
11:06:16

Шурик Корсуков
12.09.2018
11:24:22
Добрый день. В какой момент ClickHouse для MergeTree перестаёт сливать куски одной партиции? Почему в конечном счёте партиция не состоит из одного куска. Есть какое-то ограничение по размеру куска, или по количеству записей, блоков?

Denis
12.09.2018
11:36:22
Задается в конфиге, 200 гб по умолчанию. max_bytes_to_merge_at_max_space_in_pool, можно задать/ поменять для каждой таблицы, но через редактирование {table_name}.sql (с detach/attach). Он не перестает мержить. Просто вы еще не подождали 1000 лет. Т.е. последние мержи трудоемки и зачастую бессмысленны, поэтому кх их отодвигает на попозже.

Шурик Корсуков
12.09.2018
11:41:29

Андрэ
12.09.2018
11:43:27
парни, если в зукипере для разных реплик в ../replica_name/parts разные данные (не полные в одной реплике) - это значит еще не доехала репликация? Надо ждать? Как понять, что все идет штатно?

Denis
12.09.2018
11:44:46
В таблицах replication_queue смотрите

Шурик Корсуков
12.09.2018
11:49:48
а такой вопрос в догонку, на сколько эффективнее запрос к партиции из одного куска, чем запрос к партиции из нескольких кусков, с использованием полей PK. Если кусков несколько, то CH придётся пробегать по всем кускам, и позиционироваться по разреженному индексу

Максим
12.09.2018
11:49:50
А если в таблице replication_queue пусто?

Denis
12.09.2018
11:51:23

Максим
12.09.2018
11:54:33
ок, но через 1000 лет мы действительно дождёмся слияния всех партиций за один и тот же год?
там есть близкие по размеру, и хотелось бы получить из них одну большую партицию

Alex
12.09.2018
11:56:01

Yuran
12.09.2018
11:56:07

Максим
12.09.2018
11:56:28
Спасибо, попробуем!

Андрэ
12.09.2018
11:56:41
В таблицах replication_queue смотрите
если там пусто, но select partition, sum(rows) from system.parts where table = 'dsp_raw' group by partition дает разное кол-во строк. Надо чинить репликацию для этой таблицы?

Denis
12.09.2018
11:56:47
в 99.999% случаев из двух партиций по 100 вы получите одну по 200, и 0% прироста производительности, при этом 3 часа будет идти межр и три часа тормозить параллельные селекты.

Google

Андрэ
12.09.2018
11:57:43
хм. "правильная" реплика сейчас говорит в лог DB::Exception: Cannot write to ostream at offset 1030230037

Alex
12.09.2018
11:58:19

Андрэ
12.09.2018
11:58:46

Шурик Корсуков
12.09.2018
11:59:09
Когда я ищу по ключевому полю и CH берёт разреженный индекс, минимальное значение для ключевого поля он знает сразу, по первой записи в файле разреженного индекса, и если искомое значение меньше его то может сразу пропустить этот куско, а знает ли он максимальные значение ключевых полей из индекса, или начинает читать его целиком? и как выполняет поиск, последовательно или бинарным поиском?

Denis
12.09.2018
12:01:50
не задумывался, индексы маленькие, лежат в ОЗУ (в специальном кеше).
https://clickhouse.yandex/docs/en/operations/table_engines/mergetree/#primary-keys-and-indexes-in-queries

Vladimir
12.09.2018
12:13:59
create table test_cardinality (x String) engine = MergeTree order by tuple();
insert into test_cardinality (x) select concat('v', toString(number)) from numbers(10);
alter table test_cardinality add column y LowCardinality(String);
select * from test_cardinality;
выдает ошибку
Received exception from server (version 18.12.13):
Code: 49. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Got empty stream in DataTypeWithDictionary::deserializeBinaryBulkStatePrefix: (while reading column y): (while reading from part /var/lib/clickhouse/data/vlk_test/test_cardinality/all_1_1_0/ from mark 0 with max_rows_to_read = 8192).

Denis
12.09.2018
12:21:20

Андрэ
12.09.2018
12:23:12

Alexey
12.09.2018
13:22:53
Добрый день !
Скажите пожалуйста, если выполнить SHOW TABLES FROM database
Вьюхи тоже отобразятся ? или нужно выполнить SHOW VIEWS FROM database ?
я верно понимаю что такого понятия как SHOW VIEWS в ClickHouse нет ?

Alexey
12.09.2018
13:26:54

Alexey
12.09.2018
13:27:09
Окей спасибо !!!
Вот у меня есть база