sql >> Database >  >> RDS >> PostgreSQL

Tabelgrootte met pagina-indeling

Je berekening klopt op verschillende punten niet.

Vetgedrukte nadruk van mij om de vraag in een opmerking te beantwoorden.

  • De HeapTupleHeader beslaat 23 bytes . Maar elke tuple ("item" - rij- of indexitem) heeft een item-ID aan het begin van de gegevenspagina ernaartoe, in totaal op de genoemde 27 bytes. Het onderscheid is relevant omdat de werkelijke gebruikersgegevens beginnen bij een veelvoud van MAXALIGN vanaf het begin van elk item, en de item-ID telt niet mee voor deze offset - evenals de werkelijke "tuple-grootte".

  • 1 byte opvulling vanwege gegevensuitlijning (veelvoud van 8), die in dit geval wordt gebruikt voor de NULL-bitmap.

  • Geen opvulling voor type varchar (maar de extra byte hierboven vermeld)

De werkelijke berekening (met alle kolommen tot het maximum gevuld) is dus:

    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

Gerelateerd:

Je vindt er nog veel meer in de linklijst rechts van deze antwoorden.




  1. Haal de waarde van alle kolommen uit de ene tabel en haal de waarde van de andere kolom uit de tweede tabel

  2. Levensverzekeringsgegevensmodel

  3. Mysql-poort al in gebruik

  4. Unit Testing Framework voor Oracle PL/SQL?