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

Подскажите, а ведь партиции внутри кх нарезаются на part’ы, да? В

чем состоит мотивация резать колонку на part’ы?
Чтобы файл в вызов mmap пролезал?Или что?

7 ответов

18 просмотров

Не партиции нарезаются на парты, а партиции состоят из партов. Вставляя данные в mergetree таблицы они делятся на парты. Потом парты склеиваются в рамках партиции в более крупные. Начиная с какого-то объёма склеивать парты в более крупные не имеет особого смысла, так как это занимает много просто времени и много процессорного времени + требует кучу свободного места на диске. + есть параметр максимального размера парта, более опытные юзеры подскажут.

A-P Автор вопроса
Lamobot
Не партиции нарезаются на парты, а партиции состоя...

а какая разница, хранить все склеенные парты как один, или по отдельности? Разве не один и тот же объем?

A P
а какая разница, хранить все склеенные парты как о...

Данные хранятся отсортированными по первичному ключу... Как вы их соберёте после вставки в один парт? Это нужно разжать старые данные, пересобрать из них новый парт с новыми данными и опять сжать... Почитайте доку кликхауса, там внятно написано почему так сделано. Приблизительно - быстрее записать отсортированные вставленные данные на диск сразу, и потом смержить в более крупные куски(парты)

A P
а какая разница, хранить все склеенные парты как о...

если партов сотни, то селект тормозит на random io каждый инсерт создает парт. парты иммютабл. при мерже парты склеиваются в один новый, старые удаляются. в этом вся суть Merge-Tree

A-P Автор вопроса
Denny [Altinity]
если партов сотни, то селект тормозит на random io...

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

A P
Это я понял, мне непонятно, с чем связано ограниче...

мердж - это чтение всех данных и перезапись после сортировки слиянием. Когда парты слишком большие это неэкономно, и оверхед на ИО заметен. но если ИО резиновый и быстрый, можете увеличить ограничения через МТ-сеттинги

A P
Это я понял, мне непонятно, с чем связано ограниче...

такой дефолт исторически остался. Был момент в октябре 2017, в очередной версии КХ изменили дефолт макс. размера парта с 50ГБ до 100ГБ (план был постепенно довести до 300ГБ), пользователи проапгрейдились и КХ начал мержить все старые партции и КХ у всех стал колом, тратя все ресурсы на мерж, в этот чатик написали 10000 матюгов в адрес разработчиков. С тех пор решили дефолт не менять. Ну и вот представьте у меня 5 партов в партиции по 1TB , 12 часов будет идти мерж в единый парт, будет насиловать диски и cpu и мешать селектам в течении 12 часов, в результате получится один парт и перфоманс селектов увеличится, на 0.001%.

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

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

Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
> Копаем глубже > Следующий момент был, когда я спросил его, знает ли он JavaScript. Он ответил, что его учили работать с C#. Я тоже в университете писал на C#, но даже там мн...
Oleg Volkov
4
И никого не интересует какие пакеты кто использует. ((% Заходишь на сайт симфони и видишь поддержку Украины - по законам РФ это ж экстремизм. Только никто не отказывается от с...
Am Ambrion
11
лучше скажите, причём тут паскаль?
Alexey Kulakov
36
Чтобы перехватить все нажимания буков на форме, надо хук ставить? Пробовал на форме ОнКейДаун, оно ловит клаву если фокус не на компоненте с вводом текста
Serjone
15
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
7
Народ! Впервые клиенту пришло письмо от РКН, у вас, дескать, есть яндекс метрика, а нигде не написано, что вы ее юзаете. Никто не сталкивался?
Sasha Beep
14
Всем привет! вывожу на общей стр дочерние ресурсыв каждом ресурсе галерея, и первая фотка должна выводиться на общей [!DocLister? &prepare=photo !]
Alekso
12
А можно вопрос? Мне сегодня сказали что у меня функция (которая просто заполняет массив значениями) не правильная void Full(double * arr, int n) { for (int i = 0; i < n; i...
† C E †
7
Добрый вечер. Хочу чтобы у меня в классе поле было функцией, которая возвращает строку. Делаю так: interface ... TGetOutPath = function : String of object; ... protec...
Kirill Filippenok
12
Карта сайта