PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

In che modo PostgreSQL memorizza nella cache istruzioni e dati?

In genere, solo il contenuto della tabella e dei file di indice verrà memorizzato nella cache nello spazio di buffer condiviso.

I piani di query vengono memorizzati nella cache in alcune circostanze. Il modo migliore per garantire ciò è PREPARARE la query una volta, quindi ESEGUIRLA ogni volta.

I risultati di una query non vengono automaticamente memorizzati nella cache. Se esegui nuovamente la stessa query, anche se è identica lettera per lettera e non sono stati eseguiti aggiornamenti sul DB, eseguirà comunque l'intero piano. Ovviamente utilizzerà tutti i dati di tabella/indice già presenti nella cache dei buffer condivisi; quindi non dovrà necessariamente leggere nuovamente tutti i dati dal disco.

Aggiornamento sulla memorizzazione nella cache del piano

La memorizzazione nella cache del piano viene generalmente eseguita per sessione. Ciò significa che solo la connessione che effettua il piano può utilizzare la versione memorizzata nella cache. Altre connessioni devono creare e utilizzare le proprie versioni memorizzate nella cache. Questo non è davvero un problema di prestazioni perché il risparmio che ottieni dal riutilizzo di un piano è quasi sempre minuscolo rispetto al costo della connessione comunque. (A meno che le tue domande non siano veramente complicato.)

lo fa cache se usi PREPARE:http://www.postgresql.org /docs/current/static/sql-prepare.html

lo fa cache quando la query è in una funzione PL/plSQL:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

non cache le query ad hoc immesse in psql.

Si spera che qualcun altro possa elaborare altri casi di memorizzazione nella cache del piano di query.