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

PostgreSQL lento su un grande tavolo con array e molti aggiornamenti

Vorrei dare un'occhiata al FILLFACTOR per la tabella. Per impostazione predefinita è impostato su 100, puoi abbassarlo a 70 (per cominciare). Dopo questo, devi fare un VACUUM FULL per ricostruire la tabella.

ALTER TABLE tablename SET (FILLFACTOR = 70);
VACUUM FULL tablename;
REINDEX TABLE tablename;

Ciò dà a UPDATE la possibilità di posizionare la copia aggiornata di una riga sulla stessa pagina dell'originale, il che è più efficiente che posizionarla su una pagina diversa. Oppure, se il tuo database è già in qualche modo frammentato da molti aggiornamenti precedenti, potrebbe già essere abbastanza di riserva. Ora il tuo database ha anche la possibilità di eseguire aggiornamenti HOT, supponendo che la colonna che stai aggiornando non sia coinvolta in alcun indice.