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

Dimensioni della tabella con layout di pagina

Il tuo calcolo è sbagliato in diversi punti.

Enfasi in grassetto la mia per affrontare la domanda nel commento.

  • HeapTupleHeader occupa 23 byte . Ma ogni tupla ("elemento" - riga o voce di indice) ha un identificatore di elemento all'inizio della pagina dati ad esso, per un totale di 27 byte citati. La distinzione è rilevante in quanto i dati utente effettivi iniziano a un multiplo di MAXALIGN dall'inizio di ogni articolo e l'identificatore dell'articolo non viene conteggiato in questo offset, così come la "dimensione tupla" effettiva.

  • 1 byte di riempimento dovuto all'allineamento dei dati (multiplo di 8), utilizzato in questo caso per la bitmap NULL.

  • Nessun riempimento per il tipo varchar (ma il byte aggiuntivo menzionato sopra)

Quindi, il calcolo effettivo (con tutte le colonne riempite al massimo) è:

    23    -- heaptupleheader
 +   1    -- NULL bitmap (or padding if row has NO null values)
 +   9    -- columns ...
 + 101 
 +   2 
 + 101 
 +   4 
 +  11
-------------
   252 bytes

 +   4    -- item identifier at page start

Correlati:

Ne troverai molti altri nell'elenco di link a destra di queste risposte.