понятные, а по смыслу непонятно. Поясните пожалуйста на пальцах, что имеется ввиду:
For Replacing / Collapsing
You need to keep all ‘mutable’ columns outside of ORDER BY, and have some unique id (a base to collapse duplicates) inside. Typically the right-most column is some row identifier. And it’s often not needed in sparse index (so PRIMARY KEY can be a prefix of ORDER BY) The rest consideration are the same.
Examples:
ORDER BY (tenantid, site_id, eventid) -- utm_source is mutable, while tenantid, site_id is not PRIMARY KEY (tenantid, site_id) -- eventid is not used for filtering, needed only for collapsing duplicates
Ещё, подскажите пожалуйста,
Replacing - это когда мы заменяем секцию со старыми данными на секцию с актуальными?
А collapsing?
Collapsing Схлопывает по sign все строки с одинаковым order by значениями полей
А replacing заменяет На любую строку И на последнюю если versioning
что значит схлопывает по SIGN? Когда это происходит, при селекте? Простите, совсем непонятно :((( возможно, чего-то базового не знаю.
Я думала replacing - это когда мы принудительно партицию стираем, а вместо нее другую из источника заливаем. Но, судя по ответу, это что-то другое. Поясните пожалуйста.
Я пояснил Перечитайте ещё раз Парты и партиции это разные вещи Почитайте про system.parts и system.partitions Парты иммутабельны Создаются при вставке Потом объединяются с другими более старыми партами в фоне Путём сортировкой слиянием Порождая новые парты А старые ставя как active=0 И удаляя через 480 секунд Разновидности движков это всего лишь логика которая действует при вставке и слияниях
ORDERBY секция используется мержами идентификации уникальных записей (типа первичный / уникальный), ReplacingMT в мержах остаются только один экземпляр для набора ORDERBY
это в документации надо читать, тут вам напоют
Добрый вечер, вы пишите парты и партиции разные вещи, но в документации написано, что парты и есть партиции: https://clickhouse.com/docs/ru/operations/system-tables/parts/ Подскажите, где мне почитать о том, что они разные. Описание таблицы system.partitions также не нагуглила. Посоветуйте пожалуйста.
так указано же, что в этой таблице в колонке name лежит имя парта, в колонке partition — имя партиции, к которой этот part принадлежит. и там разные значения.
парты (куски) физическое представление таблицы (директории на диске) партиции логическое вы создаете таблицу partition by toYYYYMM(D) потом делаете insert ... ( D.... ) values ( 2020-01-01 .... ) insert ... ( D.... ) values ( 2020-01-02 .... ) insert ... ( D.... ) values ( 2021-01-01 .... ) создается 3 парта, в двух партициях (toYYYYMM(D)). парты (куски) сливаются /мержатся в бOльшие куски в рамках партиции т.е. в какой-то момент два первых превратятся в один станет два парта, по одному в партиции
Denny, я ведь не могу никак повлиять на parts? Они же мержатся в своей логике. И как бы это просто для информации, или нет? Если я, допустим, хочу какой-то кусок заменить. Я могу стереть партицию и внести ее заново.
Можно detach делать партов и нужный кусок убирать
Как это? Кусок же нужно логически выделить. Чтобы потом его заменить на аналогичный, но новый. А как по part понять, что в нем смержилось и чему он эквивалентен в источнике? По партиции-то понятно.
Парт сам по себе - атомичен и неизменяем. Он мерджится в другие парты. Пока не смерджился - можно удалять детачем. Виртуальная колонка _part вернет информацию о парте
на парты вы не должны хотеть влиять. есть варианты, можно сделать replace партции
извините, но в ссылке которую вы прислали написано "кусок данных", кусок данных это не партиция partition это одно из полей этой таблицы грубо говорят, партиции это префикс в имени парта и еще minmax индекс внутри парта по полям из PARTITION BY чтобы при сканировании партов можно было ОЧЕНЬ БЫСТРО отбрость лишние
Обсуждают сегодня