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

På plads opdateringer med PostgreSQL

Kun felter, der er gemt in-line, skal kopieres. For felter, der er gemt out-of-line i TOAST-tabeller, kopieres kun referencen til TOAST-posten.

Hvorvidt et felt er gemt out-of-line, afhænger af størrelsen af ​​værdien i feltet og af feltets datatype.

Hvis tuplerne er store, men kun har få felter - gerne

some_id integer,
frequently_updated integer,
charblob text

så er der ikke meget mening i at ændre noget, fordi opdateringer af frequently_updated vil generelt ikke omskrive dataene i charblob , i hvert fald hvis den er stor nok til at den er værd at pleje.

OTOH, hvis du har en tabel med mange felter, vil du omskrive meget mere med hver opdatering.

HOT vil kun hjælpe dig i begrænset omfang, fordi en HOT-opdatering kun kan ske, når ingen opdaterede kolonne(r) er en del af et indeks og der er nok ledig plads på den samme databaseside. For brede rækker vil du ikke passe mange kopier på en side, selv med TOAST, så HOT vil være til begrænset fordel.

Det kan være værd at adskille sådanne felter i separate tabeller, hvis de virkelig opdateres ofte, men resten af ​​tabellen har brede rækker, der ikke ændrer sig meget.




  1. Send mail i oracle med UTF-8-kodning i emne

  2. Hvordan undslipper man strenge i SQL Server ved hjælp af PHP?

  3. Hurtigste måde at finde afstand mellem to Lat/Long-punkter

  4. mysql:Få seneste samtaleposter efter bruger