sql >> Base de Datos >  >> RDS >> PostgreSQL

Tamaño de tabla con diseño de página

Su cálculo está mal en varios puntos.

  • Tamaño de almacenamiento de varchar , text (y character !) es, citando el manual ):

El énfasis en negrita es mío para abordar la pregunta en el comentario.

  • El HeapTupleHeader ocupa 23 bytes . Pero cada tupla ("elemento" - fila o entrada de índice) tiene un identificador de elemento al comienzo de la página de datos, totalizando los 27 bytes mencionados. La distinción es relevante ya que los datos reales del usuario comienzan en un múltiplo de MAXALIGN desde el inicio de cada elemento, y el identificador del elemento no cuenta contra este desplazamiento, así como el "tamaño de tupla" real.

  • 1 byte de relleno debido a la alineación de datos (múltiplo de 8), que se utiliza para el mapa de bits NULL en este caso.

  • Sin relleno para el tipo varchar (pero el byte adicional mencionado anteriormente)

Entonces, el cálculo real (con todas las columnas llenas al máximo) es:

    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

Relacionado:

Encontrará muchos más en la lista de enlaces a la derecha de estas respuestas.