@clickhouse_ru

Страница 420 из 723
Kirill
13.02.2018
08:34:02
Ну, в CloudFlare, насколько я помню, машины 12 x 10TB в RAID0, учитывая что КХ работает с партициями, а не со всей таблицей сразу ему должно быть относительно все равно на общий размер

И что нужно сделать, чтоб напороться?
Гранулированность накрутить и заиспользовать много строк

Vladislav
13.02.2018
08:36:21
привет. подскажите, пожалуйста: на одной из шести нод перестали мержиться данные, таблица ReplicatedMergeTree. запускаю руками optimize table X partition 201712 – ничего не происходит, на зеркальной ноде все отрабатывает и ужимается в одну папку (видно, как появляется tmp_merge_*. что это может быть и куда копать?

Google
Kirill
13.02.2018
08:39:55
А количество в parts меняется, что в system.replication_queue ?

Vladislav
13.02.2018
08:42:12
А количество в parts меняется, что в system.replication_queue ?
не знал об этой таблице, но в postpone_reason увидел ошибку – недостаточно места. спасибо! не понятно только, как это произошло только на одной ноде.

Jen
13.02.2018
09:56:46
кто то владеет информацией о том, что за объем показывает цифра 12.42GB в аутпуте: 13806631 rows in set. Elapsed: 13.001 sec. Processed 676.40 million rows, 12.42 GB (52.03 million rows/s., 954.98 MB/s.) Это объем данных, поднятых с диска в несжатом виде?

Jen
13.02.2018
09:58:03
Это объём обработанных данных в разжатом виде. С диска поднимаются в сжатом
имеются ввиду объем информации по колонкам, участвующих в запросе?

Andrey
13.02.2018
09:59:36
имеются ввиду объем информации по колонкам, участвующих в запросе?
Да это все данные поднятые для обработки запроса. Т.е если вы выбираете данные за 1 день, а партиционирование у вас по месяцам то эта цифра покажет объём за месяц.

Artiom
13.02.2018
10:10:39
а возможно ли сделать из таблицы со стандартным партишенингом (по месяцам) таблицу с кастомным партишенингом?

alter table bla ENGINE = MergeTree PARTITION BY toYYYYMM(FlightDate) Order By Year, FlightDate; типа того как-то

Kirill
13.02.2018
10:13:05
нет

Artiom
13.02.2018
10:13:37
ну тогда получается надо сделать новую и перегнать данные

Google
Artiom
13.02.2018
10:13:44
тоже вариант ?

Virus
13.02.2018
10:14:14
после обновления сервера стали появляться в логах ошибки: 2018.02.13 10:10:01.823787 [ 1 ] <Error> Application: DB::Exception: Cannot lock file /opt/clickhouse/status. Another server instance in same directory is already running. что это такое и как с ними бороться ? естесвенно запущена только одна копия сервера. root@HQDH009:~# ps ax|grep click 1674 ? Ssl 77:07 /usr/bin/clickhouse-server —config=/etc/clickhouse-server/config.xml 35287 pts/0 S+ 0:00 grep —color=auto click

Stanislav
13.02.2018
10:16:12
Такой вопрос: возможно ли средствами кликхауса хранить часть данных не в дефолтном каталоге? Хочу вынести с ssd часть статистики, которая пишется редко, а читается ещё реже.

Stanislav
13.02.2018
10:17:12
Это средствами ОС :-)

Артемий
13.02.2018
10:17:52
Andrey
13.02.2018
10:18:24
Это средствами ОС :-)
А не, сам CH такого не умеет

Jen
13.02.2018
10:19:49
Да это все данные поднятые для обработки запроса. Т.е если вы выбираете данные за 1 день, а партиционирование у вас по месяцам то эта цифра покажет объём за месяц.
т.е. всегда вне зависимости от параметров запроса поднимаются данные со всей партиции? Имею ввиду, что если я ограничиваю набор данных в партициях условиями по времени, то все равно подниматься будет вся партиция?

Александр
13.02.2018
11:27:28
@ztlpn @milovidov_an Наткнулся на странное поведение. Мне кажется, что должно работать по другому :) Запрос: https://img.facedsid.ru/wc21p.jpg - все ок Хотим посчитать кол-во строк поверх этого результата и неожиданное получаем: https://img.facedsid.ru/pllek.jpg При этом если сделать вот так: https://img.facedsid.ru/hinyx.jpg, то все работает ок.

Получается, что КХ не вызывает агрегатную функцию, а тупо возвращает значение колонки :)

Мне кажется тут нужно бросить исключение на тему, что в результате есть колонка с названием агрегатной функции

papa
13.02.2018
11:29:06
у подзапроса получается колонка с именем count() и кликхаус считает этот набор букв ссылкой на столбец.

Александр
13.02.2018
11:29:12
Либо выводить именно результат колонки в случае, если название колонки совпадает с названием агрегатной функцией и явно экранировано типа count()

papa
13.02.2018
11:29:23
если сделаете select 1 as 2 тоже можно получить интересные эффекты

Александр
13.02.2018
11:29:38
Блин, это как define true false

Я просто предложил при совпадении названия колонки и агрегатной функции выводить значение колонки если только оно заключено в ``. Если же нет, то выполнять агрегатную функцию. Так будет правильно как минимум, или я не прав? )

Александр
13.02.2018
11:37:46
Заведу issue на гитхабе :)

Google
Alex
13.02.2018
11:48:07
Подскажите а как сделать DETACH для MATERIALIZED VIEW? Нашел вот план действий https://groups.google.com/forum/#!topic/clickhouse/tGq8fyH7uHY. Но при выполнении запроса пишет ошибку "Code: 48. DB::Exception: Received from 1111. DB::Exception: Method dropPartition is not supported by storage MaterializedView."

Александр
13.02.2018
11:51:17
Закинул issue, если кому интересно и кто придерживается такого же мнение :) https://github.com/yandex/ClickHouse/issues/1896

papa
13.02.2018
11:59:19
column from table with the same name as function name строго говоря эта колонка имеет не имя как у функции, а имя как вызов функции. в общем случае, когда выражение в select не алиасится в какое-то имя, то во внешнем запросе этот атрибут будет в качестве имени иметь свое собственное выражение. частным случаем выражения может быть вызов функции, константа, или что-то поинтересней. и при использовании ровно такого же выражения во внешнем запросе приоритет сейчас получит колонка запроса, а не смысл выражения.

Alex
13.02.2018
12:01:25
2. Alter the .inner. table.
Ругается на точку перед inner

Syntax error: failed at position 13: ALTER TABLE '.inner.

Alexey
13.02.2018
12:02:00
alter table DB.`.inner.table`

Alex
13.02.2018
12:02:54
alter table DB.`.inner.table`
спасибо, почему то не додумался так обрамить(

Alex
13.02.2018
13:00:30
Коллеги, скажите, а есть возможность через метаданные, что хост из кластера стал недоступен?

Anatoly
13.02.2018
13:03:44
Добрый день! Подскажите по CollapsingMergeTree Как можно посчитать кол-во подходящих под условие строк с учетом положительного/отрицательного Sign без FINAL Есть запрос с постгреса типа SELECT SUM(CASE WHEN status = 5 then 1 else 0 END) FROM table , который возвращает кол-во строк в наборе, у которых статус равен 5 В CH запрос по идее должен быть SELECT SUM(if(sum(status * Sign) = 5, 1, 0)) FROM table, но CH ругается на аггрегатную функцию внутри другой аггрегатной Как это можно обойти?

Dmitry
13.02.2018
13:10:42
Добрый день. Воспользовался X-Clickhouse-Progress и, если использовать InsertSelect, то в ответе в хедерах получаю количество записей равное количеству строк, что переполняет заголовок. можно ли как-то изначально попросить последнюю или что-то в этом роде?

prll
13.02.2018
13:14:07
можно поставить интервал больше, напрмиер раз в три секунды

Anatoly
13.02.2018
13:19:54
sum(sign*if(.)) ?
Да, проде ок, спасибо

strange
13.02.2018
13:34:02
проклятый пожиратор переменых окружения debuild

Alexey
13.02.2018
13:36:22
разные версии ubuntu (14 и 16) при одинаковой версии сервера КХ 1.1.54342 могут доставить неудобств?

strange
13.02.2018
13:37:21
было бы странно

Google
Alexey
13.02.2018
13:50:07
Zo zo
13.02.2018
14:15:45
Подскажите, планируется большая таблица events ReplicatedMergeTree, в которой будет Date, Type и пачка других полей. Почти во всех SELECT'ах будет WHERE (Date), т.е. добавлять Date в первичный ключ однозначно надо, верно? Type редко будет в WHERE, но почти всегда будет SELECT countIf(Type IN (1,2,3)) - стоит ли добавлять Type в первичный ключ?

Alex
13.02.2018
14:20:56
Если условие в countIf, индекс не будет использоваться. Только если в WHERE.

Артемий
13.02.2018
14:29:11
Подскажите, планируется большая таблица events ReplicatedMergeTree, в которой будет Date, Type и пачка других полей. Почти во всех SELECT'ах будет WHERE (Date), т.е. добавлять Date в первичный ключ однозначно надо, верно? Type редко будет в WHERE, но почти всегда будет SELECT countIf(Type IN (1,2,3)) - стоит ли добавлять Type в первичный ключ?
Если всегда будет фильтр по дате, тогда нужен ключ: (date,type) Есди сделать ключ по (type,date) - то будет быстрый поиск по типу, а так же по типу и дате. При этом фильтр по типу должен быть всегда, иначе будет проивзодиться поиск по всем данным месяца.

Zo zo
13.02.2018
14:38:11
фильтра по типу не будет почти никогда (или вообще никогда), тип будет только в SELECT countIf(type)

еще в WHERE очень часто будет UserID. Поэтому планировал первыми двумя полями ключа делать Date, UserID. Попрос добавлять ли Type

Артемий
13.02.2018
14:43:23
фильтра по типу не будет почти никогда (или вообще никогда), тип будет только в SELECT countIf(type)
Если используется countIf(...type...) без where (...type...), то предполагаю, что вместе с агрегацией по type нужны и другие данные. Значит фильтрации по type не будет, значит ключ по type не нужен (для этого случая).

Zo zo
13.02.2018
14:44:57
в WНЕRE Type участвовать не будет понял, в индексе Type тогда не нужен

спасибо

Pavel
13.02.2018
14:54:19
Коллеги, вы не сталкивались с тем что replacingmertree ломает строки при схлопывании? У меня есть таблица, для которой справедливо равенство versionField = someOtherField. После оптимизации таблицы оно начинает нарушаться в ~0.01% записей.

Kirill
13.02.2018
14:55:21
в WНЕRE Type участвовать не будет понял, в индексе Type тогда не нужен
На сколько сильно он уникален (Type), сейчас поле действительно нет смысла добавлять в индекс если его нет в WHERE, но, когда нибудь, ORDER BY и GROUP BY научатся использовать индекс)

Dmitry
13.02.2018
15:01:47
Подскажите, а можно как-нибудь получить affected rows, по аналогии, как выдает консоль КХ: 1705 rows in set. Elapsed: 0.016 sec. Processed 1.71 thousand rows, 44.33 KB (107.14 thousand rows/s., 2.79 MB/s.)?

Kirill
13.02.2018
15:03:10
Да, в формате JSON возвращается

Zo zo
13.02.2018
15:03:23
@kshvakov Основная часть запросов будет такого вида: SELECT countIf(EventType IN (1,2,3) as hits, countIf(EventType IN (4,5,6) as clicks FROM t WHERE Date BETWEEN x AND y

Dmitry
13.02.2018
15:04:54
Zo zo
13.02.2018
15:06:02
@kshvakov Спасибо

Артемий
13.02.2018
16:02:47
Что производительнее, CollapsingMergeTree или ReplacingMergeTree? Задача - заменять дубли на последние вствленные.

Google
Kirill
13.02.2018
16:04:33
Стоило немного отвлечся и КХ с мастера у меня не собирается https://gist.github.com/kshvakov/f3b89fdce85ad6ac1ac486ef5760bc42, печально

LeiDruid
13.02.2018
17:11:28
@milovidov_an , Алексей, не планируете где-нибудь складировать very stable релизы?

Alexander
13.02.2018
17:20:51
Хорошие 292 и 327

Alexey
13.02.2018
17:23:39
2018.02.13 20:10:22.540548 [ 79 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Timeout: connect timed out: 10.1.1.204:9009, e.what() = Timeout 2018.02.13 20:17:01.349013 [ 84 ] <Error> DB::StorageReplicatedMergeTree::queueTask()::<lambda(DB::StorageReplicatedMergeTree::LogEntryPtr&)>: Poco::Exception. Code: 1000, e.code() = 0, e.displayText() = Timeout: connect timed out: 10.1.1.204:9009, e.what() = Timeout

добавил новый шард (две реплики), перенаправил запись в него, репликация работает, данные вставляются, вроде бы все ок, но такие ошибки в логе вижу

почему так?

вот это вот есть смысл увеличить? <keep_alive_timeout>3</keep_alive_timeout>

Dmitry
13.02.2018
17:43:20
MergeTree таблица - если в нее допустим писать маленькими порциями, скажем по 10-100 строк раз в секунду. Она внутри себя со временем оптимизируется для быстрого поиска, или навечно останется мелко фрагментированной?

LeiDruid
13.02.2018
17:51:01
Dmitry
13.02.2018
17:51:39
Т.е. фоновое слияние кусочков в итоге приведет ее к оптимальному виду или подоптимизирует только частично?

LeiDruid
13.02.2018
17:53:08
Т.е. фоновое слияние кусочков в итоге приведет ее к оптимальному виду или подоптимизирует только частично?
судя по тому, что я вижу в файлах БД - как раз идет оптимизация по ключу партиционирования (дате). "новые" постепенно сливаются со "старыми". В принципе, это логично и как раз "оптимизирует"

Kirill
13.02.2018
18:17:03
Dmitry
13.02.2018
18:23:08
рано или поздно оно к этому приведет, но зачем писать 10-100 строк за раз?
Ну по одной совсем не круто, а больше не набирается. Использовать buffer - тоже не вариант. Мой кейс писать в таблицу актуальные данные, а не ждать минуты пока там тысячи строк наберутся.

Kirill
13.02.2018
18:29:25
Если не часто писать будете то проблем быть не должно

Подскажите а как сделать DETACH для MATERIALIZED VIEW? Нашел вот план действий https://groups.google.com/forum/#!topic/clickhouse/tGq8fyH7uHY. Но при выполнении запроса пишет ошибку "Code: 48. DB::Exception: Received from 1111. DB::Exception: Method dropPartition is not supported by storage MaterializedView."
Вообще лучше создавать Materialized View для уже готовой таблицы CREATE MATERIALIZED VIEW name TO table AS ... - потом проще будет как с партициями, так и с самой view, ее без проблем можно будет дропать и пересоздавать без удаления данных

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