Ogólnie rzecz biorąc, tylko zawartość plików tabeli i indeksu będzie buforowana we współdzielonej przestrzeni bufora.
W pewnych okolicznościach plany zapytań są buforowane. Najlepszym sposobem na zapewnienie tego jest jednokrotne PRZYGOTOWANIE zapytania, a następnie WYKONANIE go za każdym razem.
Wyniki zapytania nie są automatycznie buforowane. Jeśli ponownie uruchomisz to samo zapytanie — nawet jeśli jest identyczne litera po literze i żadne aktualizacje nie zostały wykonane w bazie danych — nadal wykona cały plan. Oczywiście wykorzysta wszelkie dane tabeli/indeksu, które już znajdują się w pamięci podręcznej współdzielonych buforów; więc niekoniecznie będzie musiał ponownie odczytać wszystkie dane z dysku.
Aktualizacja buforowania planu
Buforowanie planu odbywa się zazwyczaj na sesję. Oznacza to, że tylko połączenie, które sprawia, że plan może korzystać z wersji z pamięci podręcznej. Inne połączenia muszą tworzyć i używać własnych wersji z pamięci podręcznej. Nie jest to tak naprawdę problem z wydajnością, ponieważ oszczędności wynikające z ponownego wykorzystania planu są prawie zawsze minimalne w porównaniu z kosztami połączenia. (Chyba że Twoje zapytania naprawdę skomplikowane.)
tak pamięć podręczna, jeśli używasz PREPARE:http://www.postgresql.org /docs/current/static/sql-prepare.html
tak cache, gdy zapytanie jest w funkcji PL/plSQL:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING
nie cache ad-hoc zapytania wprowadzone w psql.
Mam nadzieję, że ktoś inny może omówić inne przypadki buforowania planu zapytań.