о запросах на сторонние сервисы. в ней очень много записей
есть фильтрация на странице в админке по дате создания. если поставить большой интервал, запрос падает по тайм ауту
добавление индекса не помогает, так как планировщик запросов все равно юзает seq scan на больших объемах данных (на небольших - индекс все же юзается). если принудительно отключить seq scan, то планировщик начинает использовать индекс и запрос выполняется в 2 раза быстрее.
можно ли каким-то образом для конкретного запроса заставить планировщик юзать индекс?
и есть ли идеи, как еще можно улучшить скорость выполнения?
Типа find_each что-то пробовали?
Если большой запрос от сек скана не уйти. Решить можно пагинацией например
Частичная подгрузка, проанализировать и выгружать только нужные поля, мб какая-то агрегация нужна чтобы не в тупую по всему проходиться
Нужен сфинкс или эластик или что-то типа такого
Не работал с эластик. Если данных овер дох… не будет проблем с реинднксированием полей поиска?
ещё радикальное решение есть, если постоянно приходиится обращаться к проблемной таблице "как заноза в" возможно стоит рассмотреть гаризонтальное или вертикальное разделение таблиц
Вообще логи просто такие надо в кликхаузе хранить если по ним агреггация по гигантским объемам, по поводу перехода на 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 хранилище + графана. В любом из мейнстрим паттернов реализована разбиение и уплотнение временных чанков
Партиционировать
Обсуждают сегодня