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

Hvordan cacher PostgreSQL erklæringer og data?

Generelt vil kun indholdet af tabel- og indeksfiler blive cachelagret i det delte bufferrum.

Forespørgselsplaner cachelagres i nogle tilfælde. Den bedste måde at sikre dette på er at FORBEREDE forespørgslen én gang og derefter UDFØRE den hver gang.

Resultaterne af en forespørgsel cachelagres ikke automatisk. Hvis du kører den samme forespørgsel igen - selvom den er bogstav-for-bogstav identisk, og ingen opdateringer er blevet udført på databasen - vil den stadig udføre hele planen. Det vil selvfølgelig gøre brug af enhver tabel/indeksdata, der allerede er i den delte buffers cache; så det behøver ikke nødvendigvis at læse alle data fra disken igen.

Opdatering om plancaching

Plancaching udføres generelt pr. session. Det betyder, at kun den forbindelse, der laver planen, kan bruge den cachelagrede version. Andre forbindelser skal lave og bruge deres egne cachelagrede versioner. Dette er egentlig ikke et præstationsproblem, fordi besparelsen, du får ved at genbruge en plan, næsten altid er minimal sammenlignet med omkostningerne ved at forbinde alligevel. (Medmindre dine forespørgsler er virkelig kompliceret.)

Det gør cache, hvis du bruger PREPARE:http://www.postgresql.org /docs/current/static/sql-prepare.html

Det gør cache, når forespørgslen er i en PL/plSQL-funktion:http://www.postgresql.org/docs/current/static/plpgsql-implementation.html#PLPGSQL-PLAN-CACHING

Det ikke cache ad hoc-forespørgsler indtastet i psql.

Forhåbentlig kan en anden uddybe andre tilfælde af cachelagring af forespørgselsplaner.




  1. MySQL forbinder to tabel-id'er for at producere resultater fra et bord til et andet

  2. Sådan tildeler du datoværdi til alle returnerede mysql-forespørgsler

  3. Hvordan virker indre forening på et mange-til-mange forhold ved hjælp af Doctrine og Symfony2

  4. Hvordan sammenkædes flere rækker?