Size: a a a

ClickHouse не тормозит

2020 June 10

SP

Svetlana Panfilova in ClickHouse не тормозит
Ага
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dj
Добрый день, такой вопрос по ТТЛ и merge_with_timeout_ttl.
ttl_only_drop_parts=1

у нас где-то 40-50 партов в час...  КХ проверяет каждый интервал, но дропает только один парт за одну проверку. Решается более частыми проверками чтобы количество проверок было больше количества партов которые будут дропатся.
Это норма или можно как-то увеличить число партов, что будут дропаться по ТТЛ за одну итерацию проверки? а то приходится чуть ли не в минуту выставлять merge_with_timeout_ttl чтобы он успевал дропать...

логично предположить что он должен дропать все что expired
ну очевидно же что баг
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ну очевидно же что баг
очевидно для ttl_only_drop_parts=1, но при ttl_only_drop_parts=0, имхо это может вызвать перегруз... тонкая грань между багом и фичей...

в доке есть непрозрачный намек что этот merge_with_ttl_timeout что это пинание одного мерджа.
Когда ClickHouse видит, что некоторые данные устарели, он выполняет внеплановые мёржи. Для управление частотой подобных мёржей, можно задать настройку merge_with_ttl_timeout. Если её значение слишком низкое, придется выполнять много внеплановых мёржей, которые могут начать потреблять значительную долю ресурсов сервера.
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Dj
очевидно для ttl_only_drop_parts=1, но при ttl_only_drop_parts=0, имхо это может вызвать перегруз... тонкая грань между багом и фичей...

в доке есть непрозрачный намек что этот merge_with_ttl_timeout что это пинание одного мерджа.
Когда ClickHouse видит, что некоторые данные устарели, он выполняет внеплановые мёржи. Для управление частотой подобных мёржей, можно задать настройку merge_with_ttl_timeout. Если её значение слишком низкое, придется выполнять много внеплановых мёржей, которые могут начать потреблять значительную долю ресурсов сервера.
ну сделайте question  на гитхабе, спросим  разработчика
источник

D

Dj in ClickHouse не тормозит
если "починить", у людей случиться неконтролируемый "мерджепоток"
источник

D

Dj in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
ну сделайте question  на гитхабе, спросим  разработчика
https://github.com/ClickHouse/ClickHouse/issues/11576
ну пока как баг, а дальше уж будем посмотреть
источник

AR

Alexander Ryzhenko in ClickHouse не тормозит
Доброго времени суток. Столкнулись с таким:
Есть вьюха
create view ... as select ... from A inner join B inner join C inner join D
Вьюха с 3 джойнами, где B, C и D - таблицы с движком Dictionary.

и по полям этой вьюхи нельзя фильтровать.
[2020-06-10 17:25:49] Code: 48, e.displayText() = DB::Exception: Multiple JOIN disabled or does not support the query. 'set allow_experimental_multiple_joins_emulation' to enable. (version 19.15.3.6 (official build))

Может кто-то объяснить, почему так и что это за опция? Чем чревато ее включение?

При этом просто селект запрос с условием (без вьюхи) отрабатывает нормально
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexander Ryzhenko
Доброго времени суток. Столкнулись с таким:
Есть вьюха
create view ... as select ... from A inner join B inner join C inner join D
Вьюха с 3 джойнами, где B, C и D - таблицы с движком Dictionary.

и по полям этой вьюхи нельзя фильтровать.
[2020-06-10 17:25:49] Code: 48, e.displayText() = DB::Exception: Multiple JOIN disabled or does not support the query. 'set allow_experimental_multiple_joins_emulation' to enable. (version 19.15.3.6 (official build))

Может кто-то объяснить, почему так и что это за опция? Чем чревато ее включение?

При этом просто селект запрос с условием (без вьюхи) отрабатывает нормально
вообще это странно использовать таблицы с движком Dictionary для join -- это ужасно для перфоманса, почему не dictGet ????? это просто ужас ужас

>Может кто-то объяснить, почему так и что это за опция?
раньше КХ не умел джойнить больше 2 двух таблиц, надо было писать запросы лесенкой.
дальше добавили фичу но под настройкой allow_experimental_multiple_joins_emulation.
видимо эта настройка allow_experimental_multiple_joins_emulation=1 для вашего пользователя, но 0 для пользователя default

переписать лесенкой?
источник

AR

Alexander Ryzhenko in ClickHouse не тормозит
Denny Crane (I don't work at Yandex (never did))
вообще это странно использовать таблицы с движком Dictionary для join -- это ужасно для перфоманса, почему не dictGet ????? это просто ужас ужас

>Может кто-то объяснить, почему так и что это за опция?
раньше КХ не умел джойнить больше 2 двух таблиц, надо было писать запросы лесенкой.
дальше добавили фичу но под настройкой allow_experimental_multiple_joins_emulation.
видимо эта настройка allow_experimental_multiple_joins_emulation=1 для вашего пользователя, но 0 для пользователя default

переписать лесенкой?
нам нужно фильтровать по этим полям. С dictGet так можно?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Alexander Ryzhenko
нам нужно фильтровать по этим полям. С dictGet так можно?
ну это слишком абстрактный запрос, важно знать порядок таблиц в join, может у вас слева dictionary

в общем нет никакой разницы, предикаты не проталкиваются на правую таблицу, и применяются после join к результату, в случае dictGet предикаты также применятся к результату
источник

vk

vladimir kolobaev in ClickHouse не тормозит
Обновил до 20.4.5.36 и стало все ок, запросы отрабатывают за 4сек.
источник

DB

Danil Biryukov-roman... in ClickHouse не тормозит
Здравствуйте!
Очень странная ошибка на clickhouse, не могу понять что не так.
Использую версию 19.11.14.1 в докере.
Для инифиализации базы использую вот такой запрос:
CREATE DATABASE crawler
CREATE TABLE crawler.index (
'id' UInt32,
       'name' String,
       'period' String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS index_granularity=8192

CREATE TABLE crawler.index_values (
'index_id' UInt32,
       'open' Float32,
       'high' Float32,
       'low' Float32,
       'close' Float32,
       'datetime' DateTime
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(datetime)
ORDER BY (index_id, datetime)
SETTINGS index_granularity=8192

При этом мне показывается ошибка:
Code: 62. DB::Exception: Syntax error: failed at position 25 (line 2, col 1): CREATE TABLE crawler.index (
'id' UInt32,
       'name' String,
       'period' String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS index_granularity=8192

CR. Expected one of: ON, ENGINE, SETTINGS, FORMAT, storage definition, INTO OUTFILE

Что в двойне странно, так как SQL брал из create_table_query
источник

DT

Dmitry Titov in ClickHouse не тормозит
Danil Biryukov-romanov
Здравствуйте!
Очень странная ошибка на clickhouse, не могу понять что не так.
Использую версию 19.11.14.1 в докере.
Для инифиализации базы использую вот такой запрос:
CREATE DATABASE crawler
CREATE TABLE crawler.index (
'id' UInt32,
       'name' String,
       'period' String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS index_granularity=8192

CREATE TABLE crawler.index_values (
'index_id' UInt32,
       'open' Float32,
       'high' Float32,
       'low' Float32,
       'close' Float32,
       'datetime' DateTime
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(datetime)
ORDER BY (index_id, datetime)
SETTINGS index_granularity=8192

При этом мне показывается ошибка:
Code: 62. DB::Exception: Syntax error: failed at position 25 (line 2, col 1): CREATE TABLE crawler.index (
'id' UInt32,
       'name' String,
       'period' String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS index_granularity=8192

CR. Expected one of: ON, ENGINE, SETTINGS, FORMAT, storage definition, INTO OUTFILE

Что в двойне странно, так как SQL брал из create_table_query
а если добавить ; после каждого запроса?
источник

DB

Danil Biryukov-roman... in ClickHouse не тормозит
Ага, точка с заятой помогли, теперь ошибка другая :))
CREATE TABLE crawler.index_valu. Expected one of: columns or indices declaration list, column declaration, INDEX, identifier, list of elements, column or index declaration
источник

DT

Dmitry Titov in ClickHouse не тормозит
Danil Biryukov-romanov
Здравствуйте!
Очень странная ошибка на clickhouse, не могу понять что не так.
Использую версию 19.11.14.1 в докере.
Для инифиализации базы использую вот такой запрос:
CREATE DATABASE crawler
CREATE TABLE crawler.index (
'id' UInt32,
       'name' String,
       'period' String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS index_granularity=8192

CREATE TABLE crawler.index_values (
'index_id' UInt32,
       'open' Float32,
       'high' Float32,
       'low' Float32,
       'close' Float32,
       'datetime' DateTime
) ENGINE = MergeTree()
PARTITION BY toYYYYMM(datetime)
ORDER BY (index_id, datetime)
SETTINGS index_granularity=8192

При этом мне показывается ошибка:
Code: 62. DB::Exception: Syntax error: failed at position 25 (line 2, col 1): CREATE TABLE crawler.index (
'id' UInt32,
       'name' String,
       'period' String
) ENGINE = MergeTree()
ORDER BY id
SETTINGS index_granularity=8192

CR. Expected one of: ON, ENGINE, SETTINGS, FORMAT, storage definition, INTO OUTFILE

Что в двойне странно, так как SQL брал из create_table_query
возможно какие то странности с символами.
источник

DT

Dmitry Titov in ClickHouse не тормозит
еще странно, что у тебя там кавычки вместо ``
источник

DB

Danil Biryukov-roman... in ClickHouse не тормозит
Спасибо, сейяас символы проверю
источник

DB

Danil Biryukov-roman... in ClickHouse не тормозит
Да, проблема была в ; и в кавычках, спасибо!
источник

M

Munir in ClickHouse не тормозит
Всем привет. При создании словаря через ddl, потом dictGet работает только с указанием БД. Без указания БД говорит словарь не найден. Вроде раньше он без указания бд  работал, но если словарь создаешь тоже без указания бд. Но тогда он создавался в бд default. Поменял дефолтную бд на целевую и поломалось. Правильно понимаю, что мне ещё дефолтного юзера надо редактировать?
источник

DC

Denny Crane (I don't... in ClickHouse не тормозит
Munir
Всем привет. При создании словаря через ddl, потом dictGet работает только с указанием БД. Без указания БД говорит словарь не найден. Вроде раньше он без указания бд  работал, но если словарь создаешь тоже без указания бд. Но тогда он создавался в бд default. Поменял дефолтную бд на целевую и поломалось. Правильно понимаю, что мне ещё дефолтного юзера надо редактировать?
словари созданные через create dictionary нуждаются в указании бд в dictGet
словари созданные через xml не имеют базы, для нельзя указать бд в dictGet
источник