184 похожих чатов

Доброго времени суток, есть фундаментальный вопрос. Как может сломаться min-max

в partitione но данные быть правильными?

в какой момент это может сломаться?

таблица имеет этот clause:
PARTITION BY (operationid, toYYYYMMDDhhmmss(operationstarttimestamp))

данные и метадата парта расходяться...

select
toString((arrayDistinct(groupArray(_partition_value)) as pval).2) as part_dt,
'countIf' as "use case",
min(operationstarttimestamp) as mindt,
max(operationstarttimestamp) as maxdt,
version() chversion
from "tbl"
where "operationid" = '1a957750-bfd4-4963-b912-3aca2ad4ead4';

ответ:
Row 1:
──────
part_dt: [20220210045800]
use case: countIf
mindt: 2022-02-10 03:58:00
maxdt: 2022-02-10 03:58:00
chversion: 21.9.7.2

если сделать insert-select - все нормально, новый парт правильный...

29 ответов

8 просмотров

из-за таймзоны ?

【D】【J】- Автор вопроса
Denny [Altinity]
из-за таймзоны ?

да, но непонятно как минмакс неверный а данные верные

【D】【J】
да, но непонятно как минмакс неверный а данные вер...

поменяли в КХ , у нас наступил на это клиент, переливал данные

【D】【J】- Автор вопроса
Denny [Altinity]
поменяли в КХ , у нас наступил на это клиент, пере...

аааааааааааааааааааааааааа, а есть тикет или куда копать и где смотреть... и главное где отличить до и после )

【D】【J】
аааааааааааааааааааааааааа, а есть тикет или куда ...

пытаюсь вспомнить, а вы таймзону в КХ не меняли?

【D】【J】- Автор вопроса
Denny [Altinity]
пытаюсь вспомнить, а вы таймзону в КХ не меняли?

не, но сервер находится в ТЗ где есть summer daylight saving

【D】【J】- Автор вопроса
Denny [Altinity]
пытаюсь вспомнить, а вы таймзону в КХ не меняли?

для полной красоты, minmax файлы - идентичны ))) newly created part [user@host tbl]# hexdump c6835b30aa53bd4523b9ca5fc1193b36_0_0_0/minmax_operationstarttimestamp.idx 0000000 7128 6204 7128 6204 0000008 old part (broken) [user@host tbl]# hexdump 74ee8d35dfc71a4fab823c1124d089f2_0_0_0_22/minmax_operationstarttimestamp.idx 0000000 7128 6204 7128 6204 0000008

【D】【J】- Автор вопроса
Denny [Altinity]
пытаюсь вспомнить, а вы таймзону в КХ не меняли?

в общем проблема скорее что при вставке с клиента через http toYYYYMMDDmmss делается как то по другому (когда клиент в другой таймзоне), и получается битый partition.dat. # incorrect value [user@host tbl]# hexdump 74ee8d35dfc71a4fab823c1124d089f2_24_24_0/partition.dat 0000000 3124 3961 3735 3537 2d30 6662 3464 342d 0000010 3639 2d33 3962 3231 332d 6361 3261 6461 0000020 6534 6461 *68*34 6fe3 63e2 0012 0000 # correct value [user@host tbl]# hexdump c6835b30aa53bd4523b9ca5fc1193b36_0_0_0/partition.dat 0000000 3024 3030 3030 3030 2d30 6662 3464 342d 0000010 3639 2d33 3962 3231 332d 6361 3261 6461 0000020 6534 6461 *58*34 6fbc 63e2 0012 0000 ну и раз partition.dat учитывается в checksum - это не лечится...

【D】【J】- Автор вопроса
Denny [Altinity]
пытаюсь вспомнить, а вы таймзону в КХ не меняли?

короче, use-client-timezone вообще плохо работает с прунингом если в partitionkey было toYYYYMMxxxxx, и на вставке, и на селект... chserver :) select dtkey, _partition_value from default.testpartitiondat t ; SELECT dtkey, _partition_value FROM default.testpartitiondat AS t Query id: 2882d80c-020c-4e64-9c16-f72074010995 ┌───────────────dtkey─┬─_partition_value─┐ │ 2022-02-10 03:58:00 │ (20220210005800) │ └─────────────────────┴──────────────────┘ ┌───────────────dtkey─┬─_partition_value─┐ │ 2022-02-10 06:58:00 │ (20220210035800) │ └─────────────────────┴──────────────────┘ ┌───────────────dtkey─┬─_partition_value─┐ │ 2022-02-10 02:58:00 │ (20220209235800) │ └─────────────────────┴──────────────────┘ ┌───────────────dtkey─┬─_partition_value─┐ │ 2022-02-10 06:58:00 │ (20220210035800) │ └─────────────────────┴──────────────────┘ ┌───────────────dtkey─┬─_partition_value─┐ │ 2022-02-10 07:58:00 │ (20220210045800) │ └─────────────────────┴──────────────────┘ 5 rows in set. Elapsed: 0.161 sec. chserver :) select dtkey, _partition_value from default.testpartitiondat where dtkey=toDateTime('2022-02-10 02:58:00'); SELECT dtkey, _partition_value FROM default.testpartitiondat WHERE dtkey = toDateTime('2022-02-10 02:58:00') Query id: 05ca0acd-70d0-4afb-927c-4ed826dec868 Ok. 0 rows in set. Elapsed: 0.104 sec.

【D】【J】- Автор вопроса
Denny [Altinity]
пытаюсь вспомнить, а вы таймзону в КХ не меняли?

в общем клиент не причем, вставки все правильные. проблема при переходах в DST и назад так как partition.dat - integer. короче все эти примеры в документации с toYYYYMMHHddmmss надо бы переписать на toStartOfxxxx()

【D】【J】- Автор вопроса
Denny [Altinity]
пытаюсь вспомнить, а вы таймзону в КХ не меняли?

я все ещё жив, и тут вообще ещё такая проблема... почему при смене ТЗ сервера меняются данные которые считываются из таблицы если она хранит данные без ТЗ (подразумевается всегда локальная дата)?

【D】【J】
я все ещё жив, и тут вообще ещё такая проблема... ...

данные хранятся в UTC, таймзона влияет на то как данные преобразуются при инсертах и селектах если у сервера или колонки задана таймзона то при инсертах datetime (строк 2022-01-01 00:00:00) они преобразуются из этой таймзоны в UTC. Т.е. у вас одни и теже значения времени из-за DST попали в разные партиции?

【D】【J】- Автор вопроса
Denny [Altinity]
данные хранятся в UTC, таймзона влияет на то как д...

Я вообще только сегодня узнал что локально хранится в UTC, а не as-is (привет из других баз где по умолчанию используют 'WITHOUT TIMEZONE'). Т.е. при смене ТЗ сервера все данные будут битыми =) и что будет происходить если есть репликация между двумя таймзонами и данные падают в обе? время будет разное? о_О у нас это и произошло... вставка прошла в одну таймзону, парт создался, partition.dat записал время цифрой (toYYYYMMHHdd) парт среплицировался и запросы в другую реплику естесственно не возвращают ничего

【D】【J】
Я вообще только сегодня узнал что локально хранитс...

команда КХ считает что при смене таймзоны данные не будут битыми, потому что внутри сервера как бы все UTC, это конечно не так из-за партиционирования и нигде не упомянуто что таймзону менять нельзя. >и что будет происходить если есть репликация между двумя таймзонами и данные падают в обе? время будет разное? о_О время не будет разное. Отображение в строку разное в разной таймзоне, время-то в UTC

【D】【J】- Автор вопроса
Denny [Altinity]
команда КХ считает что при смене таймзоны данные н...

нет, если я делаю запрос select a,b from t where dt='2021-01-01 22:00:00' в одну реплику мне вернутся данные, в другую не вернутся... потому что у серверов разные ТЗ

【D】【J】- Автор вопроса
Denny [Altinity]
команда КХ считает что при смене таймзоны данные н...

про partition pruning на базе toYYYYMMDDhhmmss/toHour вообще молчу

【D】【J】
нет, если я делаю запрос select a,b from t where ...

ну потому что каждая реплика '2021-01-01 22:00:00' переводит в UTC в зависимости от своей таймзоны

【D】【J】- Автор вопроса
Denny [Altinity]
ну потому что каждая реплика '2021-01-01 22:00:00'...

ну да... вот просто не с той базы копировали КХ (только mysql такой по умолчанию вроде хранящий utc). наверно надо добавить тип DateTime(unspecified). Но Алексей тут сказал что это уже так! https://github.com/ClickHouse/ClickHouse/issues/8941#issuecomment-657287867

【D】【J】
ну да... вот просто не с той базы копировали КХ (т...

= '2021-01-01 22:00:00' переводится из TZ сервера в UTC т.е. делаем инсерт '2021-01-01 22:00:00' -> UTC -> Таблица делаем селест where ='2021-01-01 22:00:00' -> UTC-> = время_в UTC -> для отображения конвертим в TZ сервера видим снова '2021-01-01 22:00:00'

【D】【J】
ну да... вот просто не с той базы копировали КХ (т...

может вам на всех репликах просто поставить TZ у КХ TGTTZ

【D】【J】- Автор вопроса
Denny [Altinity]
может вам на всех репликах просто поставить TZ у К...

ну да, пока так сделаем, плюс перейдем везде c toYYYYMMHH на toStartOfxxxx

【D】【J】- Автор вопроса
Denny [Altinity]
может вам на всех репликах просто поставить TZ у К...

но эт не решает вопроса привоза тест данных с продов с разных стран на тестбед

【D】【J】- Автор вопроса
Denny [Altinity]
может вам на всех репликах просто поставить TZ у К...

надо придумать как открыть FR на хранение типа DateTime(NONE) чтоб не закрыли...

【D】【J】- Автор вопроса
Denny [Altinity]
может вам на всех репликах просто поставить TZ у К...

все что на тех серверах где сменится ТЗ поломается ((( аксиома эскобара в действии...

【D】【J】
но эт не решает вопроса привоза тест данных с прод...

А почему вы не пользуетесь UTC? Или это клиенты?

Denny [Altinity]
А почему вы не пользуетесь UTC? Или это клиенты?

Denny, очень интересно Ваше мнение. У меня кластер 30 шардов по 2 реплики. Очень хочется иметь бекап всех данных + место для экспериментов в виде еще одного кластера, с другой конфигурацией (2 шарда по 2 реплики). Не выглядит ли выстрелом в коленку решение вида "навесим на все таблицы боевого кластера materialized view, которые будут писать в remote, смотрящий на новый кластер". Записи не так много - десятки гигабайт в сутки. Чтения на боевом кластере - несколько петабайт в сутки.

vlad
Denny, очень интересно Ваше мнение. У меня кластер...

в remote не надо, у вас инсерты будут падать, если новый кластер не доступен. можно сделать distributed таблицу которая смотрит на новый кластер, и из мат.вью вставлять в нее, тогда если тестовый кластер недоступен, то проблем не будет

【D】【J】- Автор вопроса
Denny [Altinity]
А почему вы не пользуетесь UTC? Или это клиенты?

данные для сенсоров по разным ТЗ разбросаны, группировать надо по локальному времени тоже обычно ну и партиционировать тоже по дням в локальном времени...

Похожие вопросы

Обсуждают сегодня

здравствуйте. совершаю вот такую вещь: strcpy(line, (char)current_number); где current number — неподписанный шорт, line — массив чаров. ругань следующая: main.c:29:30: error...
Roberto's Ширгозиев
13
я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
@MrMiscipitlick А можешь макрос написать, который будет вычислять смещение относительно переданных меток? Просто .label1-.label2, и вернуть значение.
КТ315
35
Можно попросить небольшое ревью кода? Тут немнога, я ничего интереснее не придумал, чем написать аналог tree в качестве практики с cmake. https://github.com/hrimov/tree-unix/...
Andrew Hrimov
11
Всем привет. Ребят подскажите пожалуйста. Вопрос по дизасемблировани. Начну с начала. У меня есть скомпилированная программа на ГО (я разработчик) - в ней есть защита лицензии...
Zloy
11
А еще в перле можно уже @arr1 + @arr2?
Sergei Zhmylove
53
Привет всем. появился вопрос. Разрабатываю сайт, в данный момент он запущен. Хостинг beget. Добавляю на сайт яндекс метрику с помощью полей client-settings (взято отсюда http...
Andrew
2
кто тебе сказал, что она угроблена? многие только начинают жизнь, после увольнения из Гугла, Майкрософта, Оракла,...
Alex Kom
9
В альтернативе у нас сидеть горбатиться на дядю в галерах, пока не помрешь или пока тебя не заменят более молодым сотрудником, который готов гребсти в два раза дешевле. Вот и ...
Кабан Кабанов
7
все привет. подскажите может кто сталкивался evo 3 если в formlister в параметр formTpl указать имя чанка а не через @CODE то в указанном чанке не парсятся плейсхолдеры [**]? ...
Иван Тарасевич
5
Карта сайта