PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

W jaki sposób instrukcje i dane w pamięci podręcznej PostgreSQL?

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ń.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Czy UUID jako klucz podstawowy w PostgreSQL da złą wydajność indeksu?

  2. Przechowuj i pobieraj obrazy w Postgresql za pomocą Java

  3. Jak uzyskać różnicę dni/miesięcy/lat (datediff) między dwiema datami?

  4. Jak mogę zaimportować zagnieżdżone dane json do wielu połączonych podtabel redshift?

  5. Przetestuj funkcję HASH dla partycjonowania tabeli Postgres