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

Вопрос про влияние ключа сортировки на скорость работы CollapsingMergeTree. Например, есть

CollapsingMergeTree, ключ сортировки record_id имеет тип UUID. Её задача - удалять дубли.
В таблице 1.2 млрд записей, в день пишется около 100 млн новых, которые попарно схлопываются и остаются только оставшиеся без пар.

Выбор произвольной записи из этой таблицы по record_id занимает 2000мс и ест 100мб памяти, а если ключом сортировки сделать sipHash64(record_id), то поиск по нему происходит уже за 11мс.

Вопрос - а повлияет ли замена ключа сортировки с record_id на sipHash64(record_id) на скорость\качество схлопывания всей CollapsingMergeTree? Потому что сейчас есть ощущение, что приличная часть дублей никогда не схлопывается (не успевает?) до наступления TTL.

8 ответов

15 просмотров

вместо UUID лучше использовать snowflake id UInt64 оно монотонно нарастает и ORDER BY и merge Работать будут быстрее

Alexey-Sokolov Автор вопроса
Slach [altinity]
вместо UUID лучше использовать snowflake id UInt64...

Спасибо, поизучаю. Но в текущей ситуации они прилетают извне и для начала надо научиться более быстро работать с этими. Разве что генерить для каждой прилетающей записи второй адишник и внутри работать с ним, а наружу отдавать оригинальный.

Alexey Sokolov
Спасибо, поизучаю. Но в текущей ситуации они прил...

ну можете попробовать FINAL использовать чтобы дедупликация проходила уже в момент SELECT ...

Slach [altinity]
ну можете попробовать FINAL использовать чтобы дед...

а если выборка затронет 1ТБ данных, селект же будет дожидаться?

Alexey-Sokolov Автор вопроса

Кстати, с группировкой не всё так однозначно как с выбором одной записи: select record_id from TableWithUUIDKey group by record_id having sum(Sign) != 0 - 10 гигов памяти, 6700мс select record_id from TableWithHashedKey group by recordHash, record_id having sum(Sign) != 0 - 14 гигов памяти, 10200мс

Gleb
а если выборка затронет 1ТБ данных, селект же буде...

select не ждет. Он сам делает final на лету, для себя лично.

потому что UUID 128бит. И надо больше памяти и возможно начинается вытеснение группировки на диск

на шедулер мержей ключ таблицы не влияет, шедулер мерже рассматривает размеры и кол-во партов

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта