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

Коллеги, и снова я с вопросами :) Есть кейс, описанный еще

в 2019 году в issue: https://github.com/ClickHouse/ClickHouse/issues/7895

den crane отвечал на него.
У меня есть похожая ситуация, но чуть другая:
Есть таблица на 200 млн. строк. В ней есть поле ID с типом UUID (это важно). При попытке посчитать количество уникальных ID (требуется именно точное значение)
select uniqExact(ID) from table
запрос либо выполнится (от 30 до 40 сек), либо просто упадет по нехватке памяти буквально через секунду после старта. Если же делать отбор по строке, или числовому полю - все отрабатывает без out-of-memory,

Собственно, вопрос - uniqExact так и остался медленным и нет никакого "импортозамещения" от него? :)
ver: version 22.3.2.1

10 ответов

41 просмотр
Алексей-Фирсов Автор вопроса

@den_crane, подскажите, ничего не изменилось с тех пор? Особенно интересует момент с UUID, уж очень медленно по нему считается uniqExact....

Алексей Фирсов
@den_crane, подскажите, ничего не изменилось с тех...

нет, ничего, и планов менять нет. Зачем вам Exact? Для того чтобы побороть проблему памяти можно считать кусками select uniqExactIf(a, cityHash64(a)%5=0) from + select uniqExactIf(a, cityHash64(a)%5=1)from .. select uniqExactIf(a, cityHash64(a)%5=4)from

Алексей-Фирсов Автор вопроса
Denny [Altinity]
нет, ничего, и планов менять нет. Зачем вам Exact?...

У нас поступают данные и заказчику нужны именно точные количества присланных данных...

Алексей-Фирсов Автор вопроса
Алексей Фирсов
Ну это все равно недопустимо долго.....

никто uniqExact не использует для UUID( это же оверкил для аналитики

Алексей Фирсов
Ну это все равно недопустимо долго.....

есть небольшой хак которым иногда пользуемся select uniqExact(device) from ... => 5.2 sec select uniqExact(cityHash64(device)) from ... => 3.4 sec

Алексей-Фирсов Автор вопроса
Konstantin Ilchenko
никто uniqExact не использует для UUID( это же ове...

пробовали его в UInt128 переводить, и прочие бубны - все равно долго...

Konstantin Ilchenko
есть небольшой хак которым иногда пользуемся sele...

это коллизии, и неверный результат, проще сразу uniq

Denny [Altinity]
это коллизии, и неверный результат, проще сразу un...

это сколько данных должно быть для колизии, пока за 3 года было 0, около 20 млрд уников

Konstantin Ilchenko
это сколько данных должно быть для колизии, пока з...

в смысле? хеш 64 бит это 50% вероятность коллизии на 2 млрд.

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

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

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