Size: a a a

ClickHouse не тормозит

2021 March 22

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Alex
Привет. А кто-нибудь смог завести ClickHouse с Zookepeer с аутентификацией? У меня на последних версиях (Clickhouse 21.3.3.14, Zookeeper 3.6.2) Clickhouse падает в segfault в zkutil. Выключаю аутентификацию в Zookeeper и всё работает.
что такое зукипер аутентификация? zk ACL ?
источник

AD

Andrei Dovgalyuk in ClickHouse не тормозит
Всем привет!
Кто-нибудь работал с тз имеющими переход на зимнее\летнее время?
Сегодня в полночь был переход с 03:30 на 04:30, а кх считает по-прежнему.
DB_01 :) select toTimeZone(now(), 'Asia/Tehran')

┌─toTimeZone(now(), 'Asia/Tehran')─┐
│              2021-03-22 19:27:05 │
└──────────────────────────────────┘

DB_01 :) Bye.
[root@DB_01 preprocessed_configs]# date
Mon Mar 22 20:31:13 +0430 2021
источник

A

Alex in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
что такое зукипер аутентификация? zk ACL ?
Нет, это когда identity задается в конфиге Clickhouse в секции <zookeeper>. Ну и в самом зукипере настраивается как-то так - https://log-it.tech/2020/07/08/exclusive-sasl-on-zookeeper-connections/
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Andrei Dovgalyuk
Всем привет!
Кто-нибудь работал с тз имеющими переход на зимнее\летнее время?
Сегодня в полночь был переход с 03:30 на 04:30, а кх считает по-прежнему.
DB_01 :) select toTimeZone(now(), 'Asia/Tehran')

┌─toTimeZone(now(), 'Asia/Tehran')─┐
│              2021-03-22 19:27:05 │
└──────────────────────────────────┘

DB_01 :) Bye.
[root@DB_01 preprocessed_configs]# date
Mon Mar 22 20:31:13 +0430 2021
это баг
источник

M

Mishanya in ClickHouse не тормозит
nikoinlove 🐈
но также где-то я эту копейку в итоге потеряю?
Храните в интах с точностью до копеек либо до десятых целых копеек
Только придётся юниты отдельно хранить для валют
В целом децимал или инт решает все эти проблемы
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Alex
Нет, это когда identity задается в конфиге Clickhouse в секции <zookeeper>. Ну и в самом зукипере настраивается как-то так - https://log-it.tech/2020/07/08/exclusive-sasl-on-zookeeper-connections/
identity в <zookeeper> это auth для проверки ACL
источник

A

Alex in ClickHouse не тормозит
Denny Crane [not a Yandex bot]
identity в <zookeeper> это auth для проверки ACL
Видимо, все мои проблемы в неправильной настройке зукипера. Может у кого-то есть примеры настроек кластера zookeeper с аутентификацией, чтобы clickhouse работал?
источник

A

Assasin in ClickHouse не тормозит
Кого тут тегать, чтобы банили за спам?
источник

LU

Lars Ulrich in ClickHouse не тормозит
Assasin
Кого тут тегать, чтобы банили за спам?
ну можно и самому для начала репортнуть
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Alex
Видимо, все мои проблемы в неправильной настройке зукипера. Может у кого-то есть примеры настроек кластера zookeeper с аутентификацией, чтобы clickhouse работал?
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Assasin
Кого тут тегать, чтобы банили за спам?
никого, мы сами удалим спам, eventually == maybenever
источник

A

Alex in ClickHouse не тормозит
О, спасибо! Почитаю.
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
Похоже, что в общем случае серия форсированных (с некоторой периодичностью) OPTIMIZE FINAL не гарантируют обнуления значений для column TTL столбцов ReplicatedMergeTree таблицы, у которых этот column TTL просрочен.
Выражение для column TTL: toDate(end_datetime) + toIntervalDay(1) , где end_datetime - DateTime событий.
Таблица партиционирована как toYYYYMMDD(end_datetime).
Версия 20.10.7.4

Я у себя сейчас на партишне 20210320 этот эффект воспроизвёл.
В этом партишне у всех событий toDate(end_datetime)='2021-03-20', поэтому предполагалось, что для всех событий столбцы с column TTL "toDate(end_datetime) + toIntervalDay(1) " должны были обнулиться.

OPTIMIZE FINAL все 18 партов этого партишна сейчас объединяет в один, и уже видно, что .bin файлы для  column TTL столбцов вполне себе не нулевые.
Я внутри партов полазил - и вижу, что во многих из этих партов есть записи, где значение column TTL столбцов не сброшены, но на диске в файле ttl.txt  для этих столбцов стоят нули.
Видимо при слияниях с помощью OPTIMIZE кликхаус отталкивается от содержимого данного файла, и поэтому в новый парт попадают не обнулившиеся значения.
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
Rebrikov Konstantin
Похоже, что в общем случае серия форсированных (с некоторой периодичностью) OPTIMIZE FINAL не гарантируют обнуления значений для column TTL столбцов ReplicatedMergeTree таблицы, у которых этот column TTL просрочен.
Выражение для column TTL: toDate(end_datetime) + toIntervalDay(1) , где end_datetime - DateTime событий.
Таблица партиционирована как toYYYYMMDD(end_datetime).
Версия 20.10.7.4

Я у себя сейчас на партишне 20210320 этот эффект воспроизвёл.
В этом партишне у всех событий toDate(end_datetime)='2021-03-20', поэтому предполагалось, что для всех событий столбцы с column TTL "toDate(end_datetime) + toIntervalDay(1) " должны были обнулиться.

OPTIMIZE FINAL все 18 партов этого партишна сейчас объединяет в один, и уже видно, что .bin файлы для  column TTL столбцов вполне себе не нулевые.
Я внутри партов полазил - и вижу, что во многих из этих партов есть записи, где значение column TTL столбцов не сброшены, но на диске в файле ttl.txt  для этих столбцов стоят нули.
Видимо при слияниях с помощью OPTIMIZE кликхаус отталкивается от содержимого данного файла, и поэтому в новый парт попадают не обнулившиеся значения.
В чём особенность записей, у которых column TTL в ходе предыдущих мерджей не сбросился?
Все эти записи пришли с опозданием.
end_datetime у них 20е число, а в другом поле, wdt, (которое инициализируется как DEFAULT now() при загрузке в ClickHouse) везде сегодняшний или вчерашний день
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
На рисунке выше - результаты запроса в разрезе партов партишна 20210322.
SELECT _part, min(toDate(end_datetime)+toIntervalDay(1)) AS ttl_expression, count() as total_events, countIf(edt_ms!=0) as nonzero_edt_ms, round(100*nonzero_edt_ms/total_events, 1) as percents_nonzero_edt_ms, minIf(wdt, toYear(wdt)=2021 AND now()-wdt>3600) AS min_wdt, maxIf(wdt, toYear(wdt)=2021 AND now()-wdt>3600) AS max_wdt FROM lbsdb2_r1.all_events_v01d WHERE toYYYYMMDD(end_datetime)=20210320 GROUP BY _part ORDER BY _part;

Поля таблицы:
   end_datetime DateTime DEFAULT 0 CODEC(Delta(4), ZSTD(1)),
...
  edt_ms Int16 DEFAULT 0 TTL toDate(end_datetime) + toIntervalDay(1),
  wdt DateTime DEFAULT now() CODEC(Delta(4), ZSTD(1)) TTL toDate(end_datetime) + toIntervalDay(1),
...
PARTITION BY toYYYYMMDD(end_datetime)
ORDER BY (msisdn, end_datetime)
TTL (toDate(end_datetime) + toIntervalMonth(4)) + toIntervalDay(1)
SETTINGS min_rows_for_wide_part = 4194304, ttl_only_drop_parts = 1, index_granularity = 8192 │
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
И если я не запутался, то мораль сей басни в том, что для инициирования принудительного сбрасывания значений просроченных column TTL столбцов, надо использовать прямо предназначающийся для этого MATERIALIZE TTL (IN PARTITION ...)  а не идти обходными путями через OPTIMIZE FINAL (PARTITION ...)
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Rebrikov Konstantin
Похоже, что в общем случае серия форсированных (с некоторой периодичностью) OPTIMIZE FINAL не гарантируют обнуления значений для column TTL столбцов ReplicatedMergeTree таблицы, у которых этот column TTL просрочен.
Выражение для column TTL: toDate(end_datetime) + toIntervalDay(1) , где end_datetime - DateTime событий.
Таблица партиционирована как toYYYYMMDD(end_datetime).
Версия 20.10.7.4

Я у себя сейчас на партишне 20210320 этот эффект воспроизвёл.
В этом партишне у всех событий toDate(end_datetime)='2021-03-20', поэтому предполагалось, что для всех событий столбцы с column TTL "toDate(end_datetime) + toIntervalDay(1) " должны были обнулиться.

OPTIMIZE FINAL все 18 партов этого партишна сейчас объединяет в один, и уже видно, что .bin файлы для  column TTL столбцов вполне себе не нулевые.
Я внутри партов полазил - и вижу, что во многих из этих партов есть записи, где значение column TTL столбцов не сброшены, но на диске в файле ttl.txt  для этих столбцов стоят нули.
Видимо при слияниях с помощью OPTIMIZE кликхаус отталкивается от содержимого данного файла, и поэтому в новый парт попадают не обнулившиеся значения.
запускайте c optimize_throw_if_noop=1 -- увидите ошибку
источник

RK

Rebrikov Konstantin in ClickHouse не тормозит
Так она же успешно запустилась - сейчас не было ошибки, в PROCESSLIST  передо мной висит
источник

DC

Denny Crane [not a Y... in ClickHouse не тормозит
Rebrikov Konstantin
Так она же успешно запустилась - сейчас не было ошибки, в PROCESSLIST  передо мной висит
она?
источник