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

Aggiornamenti in atto con PostgreSQL

È necessario copiare solo i campi archiviati in linea. Per i campi memorizzati fuori linea nelle tabelle TOAST, viene copiato solo il riferimento alla voce TOAST.

Il fatto che un campo sia archiviato fuori linea dipende dalla dimensione del valore nel campo e dal tipo di dati del campo.

Se le tuple sono grandi ma hanno solo pochi campi, come

some_id integer,
frequently_updated integer,
charblob text

quindi non ha molto senso cambiare qualcosa perché gli aggiornamenti di frequently_updated generalmente non riscriverà i dati in charblob , almeno se è abbastanza grande da meritarne la cura.

OTOH, se hai una tabella con molti campi ne riscriverai molti di più ad ogni aggiornamento.

HOT ti aiuterà solo in misura limitata perché un aggiornamento HOT può avvenire solo quando nessuna colonna aggiornata fa parte di un indice e c'è abbastanza spazio libero nella stessa pagina del database. Per le righe larghe non si adattano molte copie su una pagina anche con TOAST, quindi HOT avrà un vantaggio limitato.

Può valere la pena separare questi campi in tabelle separate se vengono aggiornati di frequente, ma il resto della tabella ha righe larghe che non cambiano molto.