sql >> Databasteknik >  >> RDS >> PostgreSQL

Hur cachelagrar PostgreSQL uttalanden och data?

I allmänhet kommer bara innehållet i tabell- och indexfiler att cachelagras i det delade buffertutrymmet.

Frågeplaner cachelagras under vissa omständigheter. Det bästa sättet att säkerställa detta är att FÖRBEREDA frågan en gång och sedan UTFÖRA den varje gång.

Resultaten av en fråga cachelagras inte automatiskt. Om du kör samma fråga igen -- även om den är identisk bokstav för bokstav och inga uppdateringar har utförts på databasen -- kommer den fortfarande att köra hela planen. Det kommer naturligtvis att använda alla tabell-/indexdata som redan finns i cachen för delade buffertar; så det behöver inte nödvändigtvis läsa all data från disken igen.

Uppdatering om planens cachelagring

Plancaching görs vanligtvis per session. Detta innebär att endast anslutningen som gör planen kan använda den cachade versionen. Andra anslutningar måste skapa och använda sina egna cachade versioner. Det här är egentligen inte ett prestandaproblem eftersom besparingen du får genom att återanvända en plan nästan alltid är minimal jämfört med kostnaden för att ansluta ändå. (Om inte dina frågor är på riktigt komplicerat.)

Det gör cache om du använder PREPARE:http://www.postgresql.org /docs/current/static/sql-prepare.html

Det gör cache när frågan är i en PL/plSQL-funktion:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

Det gör det inte cache-ad-hoc-frågor inmatade i psql.

Förhoppningsvis kan någon annan utveckla andra fall av cachelagring av frågeplan.




  1. ORA-00942:tabell eller vy finns inte med Spring JDBC-mall i Spring Boot

  2. Migrerar MySQL 8.0.20-databas till AWS Aurora

  3. Vilket versionsdesignmönster skulle du rekommendera

  4. ORA-38868