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

Omskriver Postgres hele rækken ved opdatering?

Vælger c) fra dine spørgsmål:

Som @Craig allerede har forklaret , kolonner, der er "TOAST-able" og større end en vis tærskel, gemmes out-of-line i en dedikeret TOAST-tabel pr. tabel (separate "relationsgafler", separate filer på disken). Altså en 5 MB bytea kolonne forbliver stort set urørt i en opdatering, hvis selve kolonnen ikke ændres. Manualen:

Fed fremhævelse min.
Rækken i hovedrelationsgaffelen kopieres stadig, og en død række forbliver bagved, når den opdateres (uanset om nogen værdier rent faktisk ændres). For store rækkestørrelser kan følgende løsning betale sig:

Opret en lille separat 1:1 tabel for ofte skiftede flag. Kun den primære nøgle (=fremmednøgle på samme tid) og de ofte ændrede flag. Dette ville gøre opdateringer meget hurtigere og spare diskplads - for en indledende ekstra overhead og nogle omkostninger for forespørgsler, der skal slutte sig til begge tabeller (andre forespørgsler bliver faktisk hurtigere). Mere om diskpladskrav for tabelrækker:



  1. SQL - Sådan vælger du en række med en kolonne med maks. værdi

  2. Hvordan kan jeg bruge en enkelt mssql-forbindelsespulje på tværs af flere ruter i en Express 4-webapplikation?

  3. Find ud af, hvilken partition en given værdi ville være knyttet til i SQL Server (T-SQL)

  4. MySQL - SUMMEN af en gruppe af tidsforskelle