
Кэш результатов запросов в Postgres Pro: как ускорить часто выполняющиеся запросы и разгрузить базу
slonik_pg 5 часов назад Кэш результатов запросов в Postgres Pro: как ускорить часто выполняющиеся запросы и разгрузить базу Средний 18 мин 4.5K Блог компании Postgres Professional PostgreSQL * Базы данных * Серверная...
Anthropic — What company has the best second artificial intelligence model at the end of June?
В сфере искусственного интеллекта произошло заметное событие. slonik_pg 5 часов назад Кэш результатов запросов в Postgres Pro: как ускорить часто выполняющиеся запросы и разгрузить базу Средний 18 мин 4. 5K Блог компании Postgres Professional PostgreSQL * Базы данных * Серверная оптимизация * Туториал Расширение pgpro_result_cache предназначено для сохранения результатов выполнения запросов в общей памяти экземпляра кластера баз данных, которая называется «кэш результатов» (result cache). При повторном выполнении запроса, результат которого был кэширован, запрос не выполняется, а выдаётся кэшированный результат.
Запрос повторно не выполняется, что снижает нагрузку на сервер, а результат выдаётся моментально, за миллисекунды. Пример кэшированияПо умолчанию расширение выключено. Включить расширение можно на любом уровне, установив параметр конфигурации pgpro_result_cache.
Технические детали
Результаты запросов будут кэшироваться только, если в запросе указана подсказка (hint) /*+result_cache*/:/*+result_cache*/ explain (analyze) select '2+2'; ... Action: Execute and capture to cache Execution Time: 0. 101 msПосле первого выполнения запроса результат кэшируется.
В плане запроса на это укажет строка Action: Execute and capture to cache. При повторных выполнениях запроса результат будет выдан из кэша:/*+result_cache*/ explain (analyze) select '2+2'; ... Action: Read from cache Execution Time: 0.
074 msНа то, что результат выдан из кэша без фактического выполнения запроса указывает строка плана выполнения Action: Read from cache. Для чего используется кэшКандидатами на кэширование являются запросы, обрабатывающие большой объём данных, но возвращающие небольшой, так как кэшируется результат и используемая память зависит от размера результата. Хорошими примерами являются запросы с группировками.
Отраслевые последствия
Например, если на веб-странице показывается статистика типа «потрачено за месяц, за год», «5 последних покупок». Чтобы не выполнять запросы при каждом заходе на страницу, результат запросов можно закэшировать. При выдаче большого числа строк они выдаются по частям.
Например, при просмотре каталога товаров результаты выдаются постранично. В конце страницы высвечивается ссылка на последнюю страницу и несколько следующих страниц. Чтобы получить число страниц, выполняется запрос select count(*)...
Результат этого запроса можно кэшировать. Также при навигации по страницам часто используют выборку с LIMIT и OFFSET. Известно, что использование классического LIMIT ...
Этот прогресс даёт важные сигналы о будущем отрасли, и технологический мир внимательно наблюдает.





