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

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

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

8 ответов

11 просмотров

Нет смысла так много колонок в ключе сортировки, обычно больше 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
есть какие-то подводные камни при такой схеме если...

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

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта