Re: cuanto pesa un campo

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Miguel Angel Hernandez Moreno <miguel(dot)hdz(dot)mrn(at)gmail(dot)com>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: cuanto pesa un campo
Date: 2010-11-24 20:39:34
Message-ID: 1290630922-sup-7774@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Miguel Angel Hernandez Moreno's message of mié nov 24 14:23:04 -0300 2010:
> hola lista
>
> disculpen alguien sabe cuanto pesa en bytes cada campo de la siguiente lista
>
> character(4)
> integer

alvherre=# select pg_column_size(42::int);
pg_column_size
────────────────
4
(1 fila)

alvherre=# select pg_column_size('abcd'::char(4));
pg_column_size
────────────────
8
(1 fila)

alvherre=# select pg_column_size('a'::char(4));
pg_column_size
────────────────
8
(1 fila)

alvherre=# select pg_column_size('a'::varchar(4));
pg_column_size
────────────────
5
(1 fila)

etc.

Si estás tratando de determinar el ancho de un registro considera
alineamiento. Por ej. un bool seguido de un int ocupan en total 8
bytes, debido a que el int tiene alineamiento 4.

Otro ejemplo que puede ser útil:
alvherre=# create table hdz (a bool, b int);
CREATE TABLE
alvherre=# insert into hdz values ('t', 42);
INSERT 0 1
alvherre=# select pg_column_size(hdz.*) from hdz;
pg_column_size
────────────────
32
(1 fila)

Nota: cada tupla tiene un header de 23 bytes si mal no recuerdo (depende
de la versión) Agrega el tamaño del bitmap de nulos, de haberlo.

Más info en la sección "storage" del manual.

--
Álvaro Herrera <alvherre(at)commandprompt(dot)com>
The PostgreSQL Company - Command Prompt, Inc.
PostgreSQL Replication, Consulting, Custom Development, 24x7 support

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Alvaro Herrera 2010-11-24 21:09:49 Re: para que se usan los usuarios sin password
Previous Message Martín Marqués 2010-11-24 20:38:34 Repetidos errores en un servidor