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

Доброе утро 1. У меня есть таблица где очень много записей

(статистика товара за каждый день)
2. Клиент выбирает произвольный период дат (от и до) и за весь период некоторые поля суммируются некоторые берутся среднее

Проблема:
Сейчас из за количества записей запрос выполняется слишком долго

Вопрос:
Как ускорить?

15 ответов

15 просмотров
Doniyor-Valizhanov Автор вопроса

пример запроса

Doniyor Valizhanov
screenshot пример запроса

А ключ сортировки дату содержит?

очень экстремально делать партиционирование по дням. Если вы храните 50 дней - это нормально, если год - нет. Что показывает select count() from system.parts where table = '...' and active? Возможно торможение именно тут. Если отсечка данных в ваших запросах преимущественно по дате, то её и ставьте на первое место, иначе индекс не работает - идет полное сканирование. Если вам помимо указанных аналитических запросов иногда надо делать выборки по product_id - добавляйте projection с order_by product_id. Или наоборот - оставьте основую как есть, но добавьте projection order by date. Но для начала решите вопрос с партиционированием. Партов не должно быть больше 1000

Doniyor-Valizhanov Автор вопроса
Konstantin Ilchenko
Почему 1000 партов а не 5000 например?

примерно. по мне и 1000 - уже много. Это же подкаталоги на одном уровне - файловая система уже притормаживать будет.

Boris
примерно. по мне и 1000 - уже много. Это же подка...

Ну, ext4 нормально жует такие кол-ва. В целом тысячи +-ок.

Konstantin Ilchenko
Почему 1000 партов а не 5000 например?

потому что в доке так рекомендуется =) A merge only works for data parts that have the same value for the partitioning expression. This means you shouldn’t make overly granular partitions (more than about a thousand partitions). Otherwise, the SELECT query performs poorly because of an unreasonably large number of files in the file system and open file descriptors.

Boris
примерно. по мне и 1000 - уже много. Это же подка...

сейчас 4000 дневных партов, тестим сейчас по сравнению с месячными, скорость плюс минус одниковая, только сжатие лучше на месячных

Doniyor Valizhanov
screenshot да

сколько записей в каждом дне? если меньше десяти миллионов, то лучше сделать toYYYYMM(date)

Doniyor Valizhanov
Около 20-30 миллионов

ну не мало в целом, но и не так чтобы много, можно по неделям партицировать сколько ядер на машине?

Doniyor Valizhanov
Около 20-30 миллионов

SELECT uniq(product_id)/count() FROM table WHERE ... ? сколько уникальных продуктов ? возможно тормоза потому что уж очень большая группировка получается

Boris
примерно. по мне и 1000 - уже много. Это же подка...

@unamedrus причина не файловой системе. Файловая система не создает оверхеда вообще. чтение 10000 файлов это 10000 seek. Представим себе что у нас нет фс. Но мы знаем откуда на диске надо читать, а надо читать из 10000 мест, это 10000 seek. А затем нам надо слить результаты из 10к стримов в 1.

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

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

коллеги, добрый вечер! А никто не знает как модальная форма может себя закрыть? Ну допустим модальная форма определила, что смысла ей работать нет и хочет вернуть modalResult...
Михаил
83
А если изначально бот работал так : есть сайт онлайн школы. У каждого ученика свой кабинет. Где он авторизуется по своим данным. И уже в кабинете, на самом сайте делает оплату...
Денис 💡 Фрилансер
13
А что ты вообще делаешь ?
Yesgoter
13
средствами IBX как-то можно выполнить запрос insert ... returning?
Igor
31
На работе пишем распределенное приложение, у которого сотни, если не тысячи настроек. Конфиги написаны на xml, расположены на разных хостах и должны быть согласованы друг с др...
Aleksandr Druzhinin
5
Добрый день Хочу начать обучение языку, не являюсь представителем it, буду благодарна за помощь, совсем пока не понимаю ничего) Подскажите, пожалуйста, где можно начать первы...
Sara Lala
19
Всем привет 🙂 Какая-то непонятная проблема у меня с видео, раньше такого не было. Загружаю видео с гугл диска именно в видео mp4 и меняю ссылку как положено вот она: https://d...
Ксюша|Верстка на Тильде|Дизайн 🦥
6
Hi there everyone Is there anyone who have not started hamster bot yet? I need only one, I'll be glad if you do this for me DM if you haven't yet
Mehrshad
53
А какие у этого try практические плюсы перед eval?
Oleg Volkov
41
А как старый хаскел с новым стыковать ? потому как тут работает https://play.haskell.org/saved/C3xpMzcd, а вот тут https://stepik.org/lesson/7602/step/9?unit=1473 нет ошибка C...
Fedor
131
Карта сайта