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

Как можно быстро вытягивать данные из КХ если идет обращение

к одной той же таблице?
есть таблица на 500 миллионов, нужно вытянуть с нее кусками данные по 10
SELECT * FROM aggregation
ORDER BY id, type, offer, codes
LIMIT 10_000_000 OFFSET 10_000_000;
на графике трафик с БД. Видно, что ждем данные из-за выполнения запроса

в DDL таблице ORDER BY на эти же поля есть
Уточнение, данные хочу получить в C#. Net Framework 4.8

9 ответов

15 просмотров

а точно "SELECT *" нужен? просто так как система колоночная, то если нужно вытащить три-четыре колонки в таблице из 100 колонок, то лучше их явно указать

Sergei- Автор вопроса
Sergei
Там всего 5 колонок, нужны все

вы их для чего вытаскиваете?

не нужно пользоваться LIMIT/OFFSET. Нужно пользоваться where id between 10000 and 10100. При условии что у вас order by id

Sergei- Автор вопроса
Boris
не нужно пользоваться LIMIT/OFFSET. Нужно пользова...

с ORDER BY rule_id проблем нет. немного не корректно написал исходный вопрос. SQL правильный так выглядит, нужно 4 полям ордер SELECT * FROM aggregation ORDER BY search, type, offer, codes LIMIT 10_000_000 OFFSET 10_000_000;

Sergei
с ORDER BY rule_id проблем нет. немного не коррек...

я имел в виду order by/primary key таблицы - её первичный индекс. limit/offset вам не поможет, он фильтрует на выходе, после того как данные уже прочитаны (по крайней мере их начало). У вас каждый раз считывается вся таблица с начала, какой бы offset вы не поставили. Отсюда и такой профиль нагрузки

Sergei- Автор вопроса
Boris
я имел в виду order by/primary key таблицы - её пе...

DLL таблицы engine = MergeTree ORDER BY (search, type, offer, codes) если делать селект на кусок данных через LIMIT OFFSET без order by (search, type, offer, codes), то данные могут прийти не сортированные Это не подходит where id between 10000 and 10100.

Sergei
DLL таблицы engine = MergeTree ORDER BY (search, t...

search строковый что-ли? Тогда можно фрагменты для выборки и по буквам сформировать. order by (search, type, offer, codes) в запросе - оставляйте, если хотите чтобы сортировку делал КХ (но может и память сожрать свех меры) там при таком подходе иная проблема - пока вы частями вычитываете, могут прийти новые данные, и вы их не получите. Но все равно не очень понятно - для чего вы делите запрос на фрагменты, а не получаете его целиком? Если памяти хватает отсортировать все, то выгребайте целиком, без лимита. КХ будет вам стримить - только принимайте.

Sergei
DLL таблицы engine = MergeTree ORDER BY (search, t...

не заметил сразу, что у вас order by таблицы и запроса совпадают. Тогда проблемы с сортировкой нет вобще - КХ все отсортирует на вставках/мерджах. Вам нужен сеттинг правильный - https://clickhouse.com/docs/en/sql-reference/statements/select/order-by/#optimize_read_in_order Будет работать быстро - читать с диска и кормить ваше приложение. Главное чтобы оно приняло. Не нужен вам limit/offset - забудьте про него. Он тут почти не работает при несовпадении order by. Но у вас совпадает.

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

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

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