Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PostgreSQL Новый топик    Ответить
 кэширование запросов  [new]
mism
Member

Откуда: Санкт-Петербург
Сообщений: 167
Умеет ли Posgresql кэшировать результаты запросов?

Есть приложение логика работы которого неизвестна. Известно лишь что оно генерирует кучу запросов представляющих собою чистый селект без каких-либо условий. Выполняется он в среднем порядка допустим 0,5 сек. и примерно 100000 раз в сутки. Данные в таблице изменяются достаточно редко (несколько раз в сутки). Есть ли какое-либо решение позволяющее закэшировать результаты запроса, чтобы не выполнять его каждый раз. Изменить логику работы приложения пока нет возможности.
5 окт 17, 16:23    [20845884]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
Melkij
Member

Откуда: Санкт-Петербург
Сообщений: 348
mism,

query cache подобно тому который был в mysql - нет.
Кеширует странички запрашиваемые с диска в shared_buffers.

mism
чистый селект без каких-либо условий. Выполняется он в среднем порядка допустим 0,5 сек

Сделайте explain (analyze,buffers) для запроса который делает приложение (лучше с включенным track_io_timing). Если будет видно что долго читаем с диска - добавление shared_buffers поможет. Если всё и так в памяти и в запросе просто глупый seq scanверхней и единственной операцией - вы упёрлись в передачу данных и никакое кеширование на стороне базы вам с этим не поможет.
5 окт 17, 17:06    [20846050]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
mism
Member

Откуда: Санкт-Петербург
Сообщений: 167
"Если всё и так в памяти и в запросе просто глупый seq scan"

"Seq Scan on hsvarstatus (cost=0.00..4798.05 rows=310805 width=7) (actual time=0.007..92.528 rows=311274 loops=1)
Buffers: shared hit=1690
Planning time: 0.346 ms
Execution time: 204.235 ms"

Получается что ничего не поможет.
5 окт 17, 17:26    [20846117]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
Lonepsycho
Member

Откуда: Siauliai, Литва
Сообщений: 514
mism,

есть такое чудо заморское. правда не использую и не использовал. когда-то задавал такие самые вопросы, и пока искал ответы, наткнулся на это. но переосмыслив, понял, что по крайней мере в моём случае, это ружьё нацеленое на мою ногу.
5 окт 17, 21:29    [20846542]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
vyegorov
Member

Откуда: Рига
Сообщений: 1025
mism,

Судя по плану, у вас там что-то типа `SELECT * FROM hsvarstatus`, которая размером ~ 13Мб.

Такие данные надо кэшировать на стороне приложения или в стороннем продукте. redis? memcached?
5 окт 17, 22:55    [20846767]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
Maxim Boguk
Member

Откуда: Melbourne, Австралия
Сообщений: 3450
mism
"Если всё и так в памяти и в запросе просто глупый seq scan"

"Seq Scan on hsvarstatus (cost=0.00..4798.05 rows=310805 width=7) (actual time=0.007..92.528 rows=311274 loops=1)
Buffers: shared hit=1690
Planning time: 0.346 ms
Execution time: 204.235 ms"

Получается что ничего не поможет.


учитывая что на базе он 200ms выполняется то большую часть времени занимает не выполнение запроса а передача 13Mb ответа по сети что дело небыстрое в любом случае. И никакой query cache тут не поможет.
А вот 10Gbit сеть между базой и приложением - может помочь.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
6 окт 17, 04:48    [20846952]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
mism
Member

Откуда: Санкт-Петербург
Сообщений: 167
"А вот 10Gbit сеть между базой и приложением - может помочь."

Там и так уже 10Gbit.
6 окт 17, 15:09    [20848668]     Ответить | Цитировать Сообщить модератору
 Re: кэширование запросов  [new]
LeXa NalBat
Member

Откуда: Москва
Сообщений: 2885
mism
... приложение ... генерирует кучу запросов ... примерно 100000 раз в сутки... actual rows=311274
Ну пусть разработчики приложения и меняют у себя логику. Каждую секунду запрашивают 300К строк, причем редко меняющихся. Даже слов нет.
9 окт 17, 09:05    [20853436]     Ответить | Цитировать Сообщить модератору
Все форумы / PostgreSQL Ответить