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

Доброго вечера есть таблица request_logs, в которой хранится великое множество записей

о запросах на сторонние сервисы. в ней очень много записей

есть фильтрация на странице в админке по дате создания. если поставить большой интервал, запрос падает по тайм ауту

добавление индекса не помогает, так как планировщик запросов все равно юзает seq scan на больших объемах данных (на небольших - индекс все же юзается). если принудительно отключить seq scan, то планировщик начинает использовать индекс и запрос выполняется в 2 раза быстрее.

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

11 ответов

45 просмотров

Типа find_each что-то пробовали?

Если большой запрос от сек скана не уйти. Решить можно пагинацией например

Shrek44
Типа find_each что-то пробовали?

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

Роман Хайдаров
Частичная подгрузка, проанализировать и выгружать ...

Нужен сфинкс или эластик или что-то типа такого

Olexandr K.
Нужен сфинкс или эластик или что-то типа такого

Не работал с эластик. Если данных овер дох… не будет проблем с реинднксированием полей поиска?

Shrek44
Спасибо

ещё радикальное решение есть, если постоянно приходиится обращаться к проблемной таблице "как заноза в" возможно стоит рассмотреть гаризонтальное или вертикальное разделение таблиц

Вообще логи просто такие надо в кликхаузе хранить если по ним агреггация по гигантским объемам, по поводу перехода на seq scan возможно у него веса расставленны так, вернее если он выбирает секскан как я понимаю значит планировщик решил что он будет выгоднее, я видел в интернете решения, как например запускать VACUUM ANALYZE чтобы он пересчитывал веса, или изменить их в конфиге например вот чтото есть https://stackoverflow.com/questions/23143463/why-is-postgres-scanning-a-huge-table-instead-of-using-my-index

1. Для таких логов удобнее пользоваться clickhouse, он как раз хорошо аггрегирует поколоночно и ищет записи в больших сегментах, но не выбирает, выбирает медленно по идее. 2. Планировщику можно изменить веса в конфиге как показано здесь https://stackoverflow.com/a/23144500 или попробовать заставить переанализировать таблицу VACUUM ANALYZE я бы попробовал, может в этом дело.

Выше верно написали про clickhouse. В идеале переходить на энтерпрайз стандарт логирования. Коллектор + OLAP хранилище + графана. В любом из мейнстрим паттернов реализована разбиение и уплотнение временных чанков

Партиционировать

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

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

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