@clickhouse_ru

Страница 280 из 723
Alex
10.10.2017
08:43:10
по времени выполнения

Nikolai
10.10.2017
08:44:25
А никто не сталкивался с проблемой: В Merge таблице два столбца _table. Видимо из-за этого не работают некоторые запросы.
Над какими таблицами создается Merge таблица? Нет ли среди них еще одной Merge таблицы?

Cargeh
10.10.2017
08:54:05
Я правильно понимю, что данное сообщение в логах: Merge sorted 154000 rows, containing 16 columns (1 merged, 15 gathered) говорит о том, что кликхаус отсортировал 154 тыс колонок? Если я отсортирую до вставки - это облегчит жизнь? Или что значат данные в скобках?

Konstantin
10.10.2017
08:55:46
select toStringCutToZero(country) as country from audience_statistic_segments group by country можно ли как то оптимизировать такой запрос?
а вам в итоге надо просто получить список всех стран или чтото более сложное?

Google
Alex
10.10.2017
08:56:31
просто выбрать уникальные значения из стобца

столбца*

так хочеться чтобы оно быстрей отрабатывало:)

ненасытный)

Konstantin
10.10.2017
08:58:19
наверное оптимизировать особо не получится, можно было бы сделать материализованное представление в котором хранились бы уникальные значения country

Alex
10.10.2017
08:58:59
хм. не слышал про материализованное представления. надо читкануть.

Ilya
10.10.2017
09:03:18
Alex
10.10.2017
09:08:55
Может есть какие-то особенные настройки сервера (системы), которые могут замедлять работу? про своп я читал. выключить надо

стоит ubuntu 1604

Nikolai
10.10.2017
09:10:09
Создаётся над distributed, под которыми replicationmergetree
Какая версия CH? На каком запросе ошибка? Что говорит select distinct _table from ... ?

Alex
10.10.2017
09:12:06
Для небольших объемов данных (до ~200 Гб в сжатом виде) лучше всего использовать столько памяти не меньше, чем объем данных.

Это цитата. как понять что это? типа 200 гигов оперативы надо?

Google
Paul
10.10.2017
09:17:12
Nikolai
10.10.2017
09:17:46
select toStringCutToZero(country) as country from audience_statistic_segments group by country можно ли как то оптимизировать такой запрос?
Попробовал аналогичный запрос, получилось вот что: SELECT toStringCutToZero(DeviceModel) FROM hits GROUP BY DeviceModel FORMAT Null 43664 rows in set. Elapsed: 1.109 sec. Processed 1.13 billion rows, 11.91 GB (1.02 billion rows/s., 10.74 GB/s.) SELECT toStringCutToZero(DeviceModel) FROM ( SELECT DISTINCT DeviceModel FROM hits ) FORMAT Null 43664 rows in set. Elapsed: 0.965 sec. Processed 1.13 billion rows, 11.91 GB (1.17 billion rows/s., 12.34 GB/s.)

Alex
10.10.2017
09:18:47
у вас запрос немного по другому, чем я пробовал с дистинктом. я его просто поставил между селектом и тостринг

Nikolai
10.10.2017
09:19:52
Да, второй вариант без явного group by чуть быстрее сработал.

Alex
10.10.2017
09:20:15
проверяю щас.

SELECT toStringCutToZero(country) FROM ( SELECT DISTINCT country FROM audience_statistic_segments ) FORMAT Null SELECT toStringCutToZero(country) FROM ( SELECT DISTINCT country FROM audience_statistic_segments ) FORMAT Null 124 rows in set. Elapsed: 284.901 sec. Processed 6.72 billion rows, 470.62 GB (23.60 million rows/s., 1.65 GB/s.) :) SELECT toStringCutToZero(country) FROM audience_statistic_segments group by country FORMAT Null SELECT toStringCutToZero(country) FROM audience_statistic_segments GROUP BY country FORMAT Null 124 rows in set. Elapsed: 125.884 sec. Processed 6.72 billion rows, 470.65 GB (53.41 million rows/s., 3.74 GB/s.)

а получил деградацию(

хотя количество строк отличаются у меня

Николай я смотрю у вас скрость обработки 12+ г в секунду

что за железо? или у вас 450 нод))

на 6 датацентрах)

@kochetovnicolai

Nikolai
10.10.2017
09:40:50
да, наверное, из-за разницы в количестве строк. Можно еще поиграться с настройками preferred_block_size_bytes (или preferred_block_size_bytes)

нет, машина одна :)

Alex
10.10.2017
09:41:29
разница в 12 раз)

точней в 10)

а что за машина?

я так понимаю моя амазоновская кусок пластмассы)))

c4.xlarge 4 ядра и 8 гигов оперативы

но оператива вижу вообще не юзается

Google
Nikolai
10.10.2017
09:44:03
значит, наверное, дело в диске. хотя, у нас разные данные

Alex
10.10.2017
09:44:15
а что у вас за железо?

думаю может амазон слабо выдает

Nikolai
10.10.2017
09:45:36
или, например, вот из-за этого: ┌─divide(countIf(notEquals(DeviceModel, \'\')), count(DeviceModel))─┐ │ 0.20725478303925826 │ └───────────────────────────────────────────────────────────────────┘

Alex
10.10.2017
09:47:15
можете поясгнить что это?

Ilya
10.10.2017
09:48:50
Какая версия CH? На каком запросе ошибка? Что говорит select distinct _table from ... ?
:) select distinct _table from events limit 10 SELECT DISTINCT _table FROM events LIMIT 10 ┌─_table───┬─_table───┐ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ │ dst_dv02 │ dst_dv02 │ └──────────┴──────────┘ 10 rows in set. Elapsed: 0.017 sec. Processed 1.18 million rows, 2.36 MB (70.89 million rows/s., 141.77 MB/s.) :)

Nikolai
10.10.2017
09:49:12
можете поясгнить что это?
запрос говорит, что у меня 80% строк пустые

Ilya
10.10.2017
09:49:17
Версия 1.1.54245

Причём в любом запросе столбец _table возвращается: :) select count() from events2 SELECT count() FROM events2 ┌─_table───┬───count()─┐ │ dst_dv02 │ 140190634 │ └──────────┴───────────┘ 1 rows in set. Elapsed: 0.033 sec. Processed 140.19 million rows, 280.38 MB (4.30 billion rows/s., 8.61 GB/s.) :)

Nikolai
10.10.2017
09:57:26
интересно. может быть, колонка _table есть в таблицах, над которыми Merge?

Ilya
10.10.2017
09:58:02
Причём в любом запросе столбец _table возвращается: :) select count() from events2 SELECT count() FROM events2 ┌─_table───┬───count()─┐ │ dst_dv02 │ 140190634 │ └──────────┴───────────┘ 1 rows in set. Elapsed: 0.033 sec. Processed 140.19 million rows, 280.38 MB (4.30 billion rows/s., 8.61 GB/s.) :)
ПОэтому создавая новую таблицу as select получается ошибка: :) create table tmp engine=MergeTree(date, date, 8192) as select date from events2 limit 100 CREATE TABLE tmp ENGINE = MergeTree(date, date, 8192) AS SELECT date FROM events2 LIMIT 100 Received exception from server: Code: 16. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: There is no column with name _table. There are columns: date. 0 rows in set. Elapsed: 0.033 sec. :)

:) create table tmp2 engine=MergeTree(date, date, 8192) as select date,_table from events2 limit 100 CREATE TABLE tmp2 ENGINE = MergeTree(date, date, 8192) AS SELECT date, _table FROM events2 LIMIT 100 Received exception from server: Code: 15. DB::Exception: Received from localhost:9000, 127.0.0.1. DB::Exception: Duplicate column _table in block. 0 rows in set. Elapsed: 0.033 sec. :) А если попросить вставить ещё и солбец _table то тоже получаем закономерную ошибку

Bulat
10.10.2017
10:00:18
хм. не слышал про материализованное представления. надо читкануть.
можно попробовать материализованное представление без группировки, но с движком ReplacingMergeTree, в индексе которого только столбец country. Правда, при запросе надо будет добавлять FINAL

Ilya
10.10.2017
10:01:37
интересно. может быть, колонка _table есть в таблицах, над которыми Merge?
Ну и + в документации: (Если в таблице уже есть столбец _table, то виртуальный столбец называется _table1; если уже есть _table1, то _table2 и т. п.)

Nikolai
10.10.2017
10:03:11
Было первое о чём я подумал. Но нет.
Ясно. А можете воспроизвести на простом примере? Ну или описать структуру всех таблиц (Merge и то, над чем Merge), чтобы я смог у себя воспроизвести?

Ilya
10.10.2017
10:06:10
Ясно. А можете воспроизвести на простом примере? Ну или описать структуру всех таблиц (Merge и то, над чем Merge), чтобы я смог у себя воспроизвести?
Спасибо. Постараюсь воспроизвести на более простом примере. Данные, к сожалению, дать не могу:(

Тефтеля
10.10.2017
10:06:33
Всем привет, где можно почитать milestone для кх? Хочется узнать, планируется ли транзакицонность?)

Ilya
10.10.2017
10:06:35
Мне кажется проблема началась после добавления новых столбцов.

Google
Тефтеля
10.10.2017
10:08:12
Bulat
10.10.2017
10:08:21
вроде как нет и не планируется. слишком дорого и сложно

Dasha
10.10.2017
10:25:21
Добрый день! А верно, что в Tableau таблицу из ClickHouse нельзя открыть на вкладке DataSource. У меня пока вышло только sql запрос простой написать. Какие тут еще есть ограничения на работу с ClickHouse?

Alexander
10.10.2017
10:46:05
Здравствуйте, необходимо использовать СУБД для хранения всякой истории, так же необходимо делать выборку по истории(Посчитать что-либо). Ключевые поля типа string(на первый взгляд). По идее задача вписывается в рамки данной СУБД. Что вы можете сказать по этому поводу?

Но: бест практис это сделать много колонок типов инт и считать по ним(ну это для статы). Однако здесь получается варьируемое поле string

Ivan
10.10.2017
10:49:57
привет, я поднял кластер из двух шардов по две реплики в каждом, создал на них ReplicatedMergeTree-таблицу с датой в качестве ключа и Distributed, которая на неё смотрит. когда делаю даже простейшую выборку, SELECT *, в Distributed ровно в два раза больше элементов по сравнению с replicated (у каждого есть дубль). я что-то делаю не так, или это ожидаемый эффект? вставляю в Distributed.

Ivan
10.10.2017
10:55:27
да, но такое было даже при false

Nikolai
10.10.2017
10:56:36
можете показать конфигурацию кластера?

Ivan
10.10.2017
10:58:20
да, разумеется. https://paste.yandex-team.ru/306144

replica в макросах у всех разная

да, разумеется. https://paste.yandex-team.ru/306144
https://paste.yandex-team.ru/306146 схема таблиц, если необходимо

Александр
10.10.2017
11:05:01
Но: бест практис это сделать много колонок типов инт и считать по ним(ну это для статы). Однако здесь получается варьируемое поле string
У меня есть кейс с таблицей и стринговыми полями, но там не совсем исторические данные. Они фейково партиционированы. Строк в таблице в районе 4ккк. Работает шустро )

Даже с like запросами. Данные в пределах одной ноды, без шардинга

Nikolai
10.10.2017
11:08:06
https://paste.yandex-team.ru/306146 схема таблиц, если необходимо
Разный ли путь в zookeeper указан для таблиц из разных шардов? По описанию вижу, что параметр {shard} при создании таблиц не использовался.

Alexander
10.10.2017
11:08:08
фейково партиционированы? можно bin(md5()) ?)

Александр
10.10.2017
11:08:49
фейково партиционированы? можно bin(md5()) ?)
Можно, главное что бы дата получилась корректная

Александр
10.10.2017
11:09:02
Пока партиционирование только по дате

Google
Nikolai
10.10.2017
11:09:48
одинаковый, только реплика фигурирует
тогда попробуйте добавить '_{shard}' к пути зукипера

Иван
10.10.2017
11:10:09
Гайз, где-нибудь есть мануал по добавлению функций в локальный кликхаус? (Нужно расстояние левенштейна)

Ivan
10.10.2017
11:19:20
Алексей
10.10.2017
11:34:56
господа, а что можно сделать что бы на ридонли конекшене избежать уставновки max_result_rows в jdbc подключении через datagrip ?

Иван
10.10.2017
11:38:38
мб это поможет: https://clickhouse.yandex/docs/ru/development/index.html
Спасибо, посмотрю. В прошлый раз дописывали функцию при помощи интуиции, видимо и в этот раз также придётся)

Alex
10.10.2017
11:42:29
При INSERT ... SELECT в случае несоответствия полей падает вся реплика. У кого-то бывало такое? лог https://pastebin.com/wXR6sRUa

Andrey
10.10.2017
11:44:26
Есть ли (или когда появится) возможность переименовывать столбцы? В документации нет rename на колонку.

Alex
10.10.2017
11:45:19
@kochetovnicolai а вот эти амазоновские EBS они лучше, чем купить отдельные диски SSD на сервер?

и что вообще кликхаус больше любит, диск или проц?

Nikolai
10.10.2017
11:52:38
второе зависит от запроса. если надо что-то прочитать из диапазона, то диск. Если что-то более сложное, то может упереться в проц и память. Лучше смотреть узкие места для конкретных случаев.

Про сравнение с EBS сказать не могу. Интуиция подсказывает, что лучше купить отдельные SSD, но не более.

Есть ли (или когда появится) возможность переименовывать столбцы? В документации нет rename на колонку.
Сейчас такой возможности нет. В планах должна быть, но не похоже, что скоро.

Alex
10.10.2017
12:44:12
Добрый день. Скажите, в какую партицию попадают данные с датой меньше 1970 года?

Тип таблицы MergeTree

Roman
10.10.2017
12:53:54
@kochetovnicolai а вот эти амазоновские EBS они лучше, чем купить отдельные диски SSD на сервер?
по личному опыту, EBS по сравнению с локальным SSD сильно медленнее, т.к. EBS в общем случае ограничен по throughtput (что-то вроде 150MB/s для gp2), и latency у него очень большой, так как оно в диск по сети ходит. У нас в качестве трюка для ускорения сделан костыль с dm-cache на ssd instance store.

Alex
10.10.2017
12:54:52
Roman костыль на амазоне?

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