Lessico IT › Database › XID wraparound

XID wraparound

Database Svenska → Aggiornato: 2026-10-02

Gli ID di transazione di PostgreSQL sono a 32 bit e si riavvolgono. Se non si ritirano in tempo quelli vecchi, il database smette del tutto di accettare scritture.

La visibilità di una riga dipende dal fatto che la transazione che l'ha creata sia venuta prima o dopo la nostra, ma un contatore circolare non ha un «prima» assoluto: metà dello spazio vale come passato e metà come futuro. Se una riga vecchia supera il confine dei due miliardi, apparirebbe di colpo come proveniente dal futuro e diventerebbe invisibile — per questo l'autovacuum «congela» le righe vecchie, marcandole come permanentemente visibili. Se si lascia correre abbastanza a lungo, il server inizia a emettere avvisi; quando restano un milione di ID blocca le scritture e pretende un vacuum in modalità single-user. È una delle poche cause note di fermi non pianificati di più giorni in installazioni Postgres altrimenti ben gestite.

← Torna al lessico