таблицы (MergeTree)? PARTITION BY установлено одним полем, количество значений которого не может превышать 90. А в итоге количество партиций почти 400. OPTIMIZE ... FINAL сократил количество до 360 всего. И все 360 "active"...
Может это парты, а не партции ? Как вы смотрите количество партиций ?
PARTITION BY это всего лишь minmax индекс внутри каждого парта , который позволяет быстро отсеять ненужны парты от сканирования
тут прошло такое активное обсуждение этого топика, что у меня возник вопрос а в чем именно проблема ситуации "4-5 партов на партицию", что ее нужно так активно фиксить?
А я же указывал выше, что ошибка вставки происходила (ссылка). Да, я мог просто поменять параметр max_partitions_per_insert_block, но это не дало бы тех советов, которые в итоге я получил )
проблемы с этим нет но есть проблема когда в одном инсерте трогается несколько партиций и порождаются мелкие парты которые увеличивают очередь на мержи и как только общее кол-во партов больше 300 ... то нет гарантий что мержи вообще доведут состояние таблицы до юзабельного...
ок, понял сорри, невозможно держать в голове все местные дискуссии без реплаев, так что ваше сообщение для меня виделось началом новой дискуссии) в общем (мое мнение, о котором никто не просил), если бы я дизайнил таблицу, я бы поле с 90 уникальными значениями просто поставил первым в ключ сортировки, не трогая партиции. предпочитаю партиции "календарные", это больше согласуется с жизненным циклом таблиц в продакшене
+1 ;) изначальный дизайн только партиции по месяцам вообще порождал
Хм... А если у меня все данные, хранящиеся в таблице, всегда актуальны (то есть никаких TTL и прочего нет)? И могут запросить данные, как за конкретно выбранный день, так и по конкретной территории, не приведет ли это к замедлениям выборки?
дневные или недельные (в зависимости от объемов данных) партиции + order by с territory на первом месте. minmax партиций будет отвечать за выборку дней, индекс за выборку по территории, плюс сожмется все хорошо, так как low-cardinality поле на первом месте
И как тогда проводить вставку данных, нужна ли будет группировка по территории, если вынести ее в order by?
вы имеете в виду, нужно ли вставлять данные по территориям в определенном порядке?
Ну да, с чего, собственно, сегодня обсуждение и началось - у меня вставки разнородные были, без группировки по территории, скажем так. И порождали кучу мелких партов и, как следствие, ошибку вставки... Если же уйти от территорий как партиций, то нужна ли будет группировка при вставке по такой схеме...
мы у себя не делаем у нас таблица с примерно такой же структурой, данные со всех "территорий" льются "почти онлайн" одновременно в одну партицию может, стоит, конечно, протестить, помогает ли какая-нибудь пред-сортировка ускорить итоговые мерджи, но лично я таких тестов не делал )
нет не нужна, если партицирование по датам и даты из одной партиции ... то все что в одном INSERT идет будет блоками по миллиону записей порождать новые парты...
Обсуждают сегодня