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

Добрый день, подскажите пожалуйста, допустим у меня есть таблица с

движком MergeTree в ней около 70 столбцов
Мне нужно различные срезы(GROUP BY) по 50ти из них, в ключ сортировки мне прописывать все 50?
И второй вопрос, знаю что наиболее часто используется 10 из них, в PRIMARY KEY указывать все 10?

8 ответов

9 просмотров

Нет смысла так много колонок в ключе сортировки, обычно больше 4-5 не даёт большого эффекта, есть смысл подбирать их число по среднему количеству записей в группировке по колонкам и соотносить с index_granularity, например index_granularuty = 8192 select avg(c) from (select count() c from table group by col1) => 20000 select avg(c) from (select count() c from table group by col1, col2) => 10000 select avg(c) from (select count() c from table group by col1, col2, col3) => 5000 больше 3 колонок в данном случае большого профита не даст, так как КХ за раз читает кусками размером index_granularuty записей. Это довольно упрощённая схема подсчёта числа колонок, но суть в том чтобы добавление ещё одного столбца позволило пропускать длинные диапазоны данных. в MergeTree ключ сортировки и primary key не отличаются, это валидно для таблиц типа SummingMergeTree/AggregatingMergeTree

Alex- Автор вопроса
Konstantin Ilchenko
Нет смысла так много колонок в ключе сортировки, о...

просто хотелось чтобы они писались упорядоченно, все таки на селект это должно влиять или все таки больше 3х не стоит?

Alex
просто хотелось чтобы они писались упорядоченно, в...

данных читать от этого КХ меньше не будет при селектах, можно ещё пробовать уменьшить index_granularity, тогда можно увеличить число колонок. И самое главное я не говорил 3 колонки) вам надо определить это по своим данным) ну и например низкокардинальные колонки имеет смысл ставить ближе к началу, чтобы легче было пропускать блоки

Alex- Автор вопроса
Konstantin Ilchenko
данных читать от этого КХ меньше не будет при селе...

благодарю такой вопрос ещё поставил таблицу buffer перед MergeTree из за частых вставок, но по кол-ву записей показывает также как и в MergeTree, так должно быть?

Alex
благодарю такой вопрос ещё поставил таблицу buffer...

да, buffer под капотом сходит в mergetree и посчитает в сумме

Alex- Автор вопроса
Konstantin Ilchenko
да, buffer под капотом сходит в mergetree и посчит...

есть какие-то подводные камни при такой схеме если буду использовать в дальнейшем Distributed и ReplicatedMergeTree?

Alex
есть какие-то подводные камни при такой схеме если...

возможно с самим буфером, если сервер упадёт, могут потеряться данные

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

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

Мужики и девушки, привет) в Вelphi xe7 в настройках во вкладке "Editor Options" далее " Color" есть список: "Elements", открыв который мы можем настраивать отображение разных...
Kraszx
14
Добрый вечер. Есть вопрос, а может и предложение. Был у меня диалог в другой группе о делфи и я задался вопросом: "А нельзя ли в делфи цвет //коментария и {комментария} сде...
Kraszx
24
Я вот подумал. SSE выполняет операции максимум с 64-битной точностью. А FPU - всегда с 80-битной. Разве не должно быть FPU точнее тогда?
The Bird of Hermes
13
как быть с принтером? такой подход прокатит?
zamtmn
12
Мдя, прикол, боевая сборка запускается (именно под отладчиком) после F9 примерно полторы минуты (97 секунд если быть точным). Начал копать - проблема детектится сразу - зависа...
Александр (Rouse_) Багель
38
Всем привет! Подскажи, пожалуйста, как передать в TComboBox сразу значение и id записи. На Delphi я делал так: ComboBox1.Items.AddObject('Какое-то значение', Pointer(id запис...
Евгений
13
Здравствуйте, вопрос по структурам данных. Были у вас случаи, когда пришлось писать деревья или двунаправленные списки?
/ /
50
Я не понимаю, это троллинг или что? Швабрика поддерживают, который буквально пишет на ассемблере взаимодействия с винапи. Я это ещё написал загрузчик и хоть что-то изучаю в о...
Shadow Akira
6
А вот это что за конструкция? Вернее, она тут нафига?
Serjone
10
Привет. Подскажите, как правильно сматчить лист фиксированного размера, чтобы компилятор не говорил мне о неполном паттерне? Допустим что-то такое [x', y'] = sort [x, y]?
Arseny
8
Карта сайта