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

Всем привет, заранее извиняюсь, если это не место для нубских

вопросов, но всё же.

Есть у меня данные. Несколько миллиардов "событий".
Поля есть общие для всех, а есть те, что различаются в зависимости от "типа" событий и хочется иметь плоское отображение всех событий вместе

У некоторых типов есть строковые поля, для которых есть желание искать по подстроке.

Я сделал первый наивный заход на данные отсортированные по времени и skip-index token_bf по этим строковым полям. Наивная реализация показывает, что поиск "первые 10 записей, где в поле A содержится строка B" выполняется где-то за 10 секунд. Для бизнеса нужно сжать это примерно в секунду, а желательно меньше. Не подскажете в какую сторону копать? (Изменение схемы, тюнинг параметров хранения, использование другого, более подходящего инструмента)


Сейчас это всё работает на Distributed таблице на кластере из трёх серверов.

Заранее спасибо.

4 ответов

7 просмотров

вы уверены что у вас skip indexes используются? запустите clickhouse-client в нем SET send_log_level='trace'; и посмотрите что показывается

какой у вас primary key?

ORDER BY есть в запросе?

Timur-Makarchuk Автор вопроса
Slach [altinity]
вы уверены что у вас skip indexes используются? за...

Очень много вот такого вида строк [ch-02.ru.tds] 2020.12.14 11:22:25.880166 [ 649228 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Running binary search on index range for part 855327e6fc45d96cf83f937bba1e9252_10521_10521_0 (28 marks) [ch-02.ru.tds] 2020.12.14 11:22:25.880187 [ 532604 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Running binary search on index range for part 855327e6fc45d96cf83f937bba1e9252_10522_10522_0 (27 marks) [ch-02.ru.tds] 2020.12.14 11:22:25.880200 [ 649228 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Found (LEFT) boundary mark: 0 [ch-02.ru.tds] 2020.12.14 11:22:25.880214 [ 532604 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Found (LEFT) boundary mark: 0 [ch-02.ru.tds] 2020.12.14 11:22:25.880225 [ 649228 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Found (RIGHT) boundary mark: 28 [ch-02.ru.tds] 2020.12.14 11:22:25.880239 [ 532604 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Found (RIGHT) boundary mark: 27 [ch-02.ru.tds] 2020.12.14 11:22:25.880252 [ 649228 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Found continuous range in 9 steps [ch-02.ru.tds] 2020.12.14 11:22:25.880259 [ 532604 ] {2cf3d4cf-bab5-4d5f-adca-4ca091551b25} <Trace> default.`.inner_id.4911e67e-91f4-441e-9e30-64313c4cd10b` (e45f44e5-42e4-447f-9abb-1efa3b9f35b2) (SelectExecutor): Found continuous range in 9 steps

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

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

Вопрос по диагностике ошибок (я знаю в чем, в данном конкретном примере, я знаю, как исправить, пример модельный, понятно, что в реальности бывает намного запутаннее). module...
ⰄⰎⰋⰐⰐⰑⰛⰤⰧⰧⰩⰄ ⰊⰑⰁⰓⰡⰛⰦⰕⰫ
10
А чем вам питонисты не угодили?😂
.
79
Есть какой-нибудь для Delphi/FPC T*Compression(Decompression)Stream на базе LZ4/Zstd/любой другой быстрый(и хорошо сжимающий) алгоритм А ещё лучше в pure pascal А ещё лучше од...
notme
48
Есть предложения, как подобное можно упростить?
Hemul GM
12
type TObj = object procedure Init; virtual; end; TObj1 = object(TObj) procedure Init; override; end; procedure TObj1.Init; begin inherited; end; procedur...
Alexander 👋
29
У меня вопросик назрел. Почему, создав класс без наследования и реализации деструктора Destroy, деструктор не вызывался при free. Потом указал наследование от tobject и overri...
Сергей Бычков
9
Такой вопросец - есть функция function MySuperDuperConcat(const a: array of AnsiString): AnsiString; Как мне в её теле сделать вот так? Result:=Concat(a); А не грустный вариан...
notme
15
just use free version ?? pycharm has a free version
Fan / Ac
9
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
86
Привет, не могли бы подсказать почему "A tree falls in a forest" не отображается в journalctl? openlog ("exampleprog", LOG_CONS | LOG_PID | LOG_NDELAY, LOG_LOCAL1); syslog (LO...
•_• Asmanov 🎓
3
Карта сайта