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
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 |