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

PostgreSQL midlertidige tabeller

Bemærk venligst, at i Postgres er standardadfærden for midlertidige tabeller, at de ikke automatisk slettes, og data bevares ved commit. Se ON COMMIT .

Midlertidige tabeller slettes dog i slutningen af ​​en databasesession:

Midlertidige tabeller slettes automatisk i slutningen af ​​en session, eller valgfrit i slutningen af ​​den aktuelle transaktion.

Der er flere overvejelser, du skal tage i betragtning:

  • Hvis du eksplicit ønsker at DROP en midlertidig tabel i slutningen af ​​en transaktion, opret den med CREATE TEMPORARY TABLE ... ON COMMIT DROP syntaks.
  • I nærvær af forbindelsespooling , kan en databasesession strække sig over flere klientsessioner; for at undgå sammenstød i CREATE , bør du droppe dine midlertidige tabeller -- enten før du returnerer en forbindelse til puljen (f.eks. ved at gøre alt i en transaktion og bruge ON COMMIT DROP oprettelsessyntaks), eller efter behov (ved at gå foran enhver CREATE TEMPORARY TABLE sætning med en tilsvarende DROP TABLE IF EXISTS , som har fordelen af ​​også at arbejde udenfor transaktioner f.eks. hvis forbindelsen bruges i auto-commit-tilstand.)
  • Mens den midlertidige tabel er i brug, hvor meget af den vil passe i hukommelsen, før den flyder over på disken? Se temp_buffers mulighed i postgresql.conf
  • Er der andet, jeg bør bekymre mig om, når jeg ofte arbejder med midlertidige tabeller? En støvsuger anbefales, efter at du har DROPPT midlertidige borde, for at rydde op i eventuelle døde tupler fra kataloget. Postgres vil automatisk støvsuge hvert 3. minut eller deromkring for dig, når du bruger standardindstillingerne (auto_vacuum ).

Også uden relation til dit spørgsmål (men muligvis relateret til dit projekt):husk, at hvis du skal køre forespørgsler mod en midlertidig tabel efter du har udfyldt det, så er det en god idé at oprette passende indekser og udstede en ANALYZE på det pågældende vikarbord efter du er færdig med at indsætte i den. Som standard vil den omkostningsbaserede optimering antage, at en nyoprettet temp-tabellen har ~1000 rækker, og dette kan resultere i dårlig ydeevne, hvis temp-tabellen faktisk indeholder millioner af rækker.



  1. Salesforce SOQL fra Windows PowerShell

  2. Tjek de seneste nyheder om Microsoft Access, inklusive Access 2022!

  3. Bedste fremgangsmåder til at arbejde med flere tabeller

  4. Kan ikke indlæse DLL "OraOps10.dll"