TGViewer
Postgres Professional Postgres Professional @postgres_pro · 3.53K subscribers
Post #1491 1.42K
Один и тот же тяжелый запрос может выполняться десятки, сотни или тысячи раз.

Например, дашборд пересчитывает агрегаты, приложение проверяет права пользователя, каталог считает количество страниц, а BI-система запрашивает метаданные схемы.

Если результат не меняется, база все равно каждый раз тратит ресурсы: читает данные, строит план, выполняет соединения и считает агрегаты.

Для таких сценариев в Postgres Pro Enterprise есть расширение pgpro_result_cache. Оно сохраняет результат запроса в общей памяти экземпляра кластера. При повторном выполнении сервер не считает запрос заново, а сразу отдает готовый результат из кэша.

Это полезно, когда запрос выполняется часто, обрабатывает много данных, но возвращает небольшой результат. Например:

🔹 Агрегаты для отчетов и дашбордов.

🔹 Счетчики для пагинации.

🔹 Справочники и проверки прав.

🔹Частые запросы к системному каталогу.

🔹 Метаданные, которые запрашивают ORM, BI-системы и пулы соединений.

Такой кэш можно реализовать на стороне приложения, но это усложняет код. Разработчикам нужно синхронизировать данные между сессиями, следить за актуальностью результатов и отдельно продумывать логику сброса.

pgpro_result_cache переносит эту задачу на уровень СУБД. Расширение включается параметром конфигурации, а конкретный запрос попадает в кэш только по явному хинту /*+result_cache*/. Поэтому механизм не пытается кэшировать все подряд: разработчик сам выбирает запросы, для которых это действительно полезно.

У кэша есть TTL, мониторинг через pgpro_result_cache_data и режим согласованного кэша pgpro_result_cache.consistent = on. В этом режиме расширение автоматически сбрасывает зависимые записи при DML- и DDL-операциях.

При этом кэш не работает как универсальная кнопка ускорения. Очень быстрые запросы иногда выгоднее выполнить заново, чем искать результат в кэше. Если в базе используются политики RLS, тоже нужен особый контроль: кэшированные результаты их игнорируют.

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

💬 Читайте нас в MAX
  • 🔥 9
  • 👍 6
  • ❤‍🔥 1
More from @postgres_pro
  1. Sep 24, 2026🚀 Показываем, как перенести тяжелые отчеты 1С на реплику Postgres Pro Enterprise для 1С и…
  2. Sep 23, 2026⏰ Через час, в 11:00 по Москве, начнем вебинар «Postgres Pro Backup Enterprise: от бэкапа…
  3. Sep 22, 2026🌅 Утро вечера мудренее. Особенно если завтра 23 сентября и последний день приема докладов…
  4. Sep 22, 2026Tarkett перенесла 1С и 1С:ЗУП с Microsoft SQL Server на Postgres Pro Enterprise для 1С — н…
  5. Sep 21, 2026🗂️ От бумажных картотек до поиска по смыслу — как базы данных стали основой цифровых серв…
  6. Sep 18, 2026Post #1681
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →