Re: Consulta sobre pg_column_size()

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Luis A(dot) Zevallos Cárdenas <lzevallos(at)lobosistemas(dot)com>
Cc: posgres <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Consulta sobre pg_column_size()
Date: 2009-05-20 20:41:55
Message-ID: 20090520204155.GG5368@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Luis A. Zevallos Cárdenas escribió:

> --mostrar tamaño por columna(supongo)
> select
> pg_size_pretty(pg_column_size('id')),pg_size_pretty(pg_column_size('salesclerk')),pg_size_pretty(pg_column_size('sales_date'))
> from sch_desarrollo.sales
>
> "3 bytes";"11 bytes";"11 bytes"

Esto no es exacto, porque entre cada columna hay espacio de
alineamiento; además hay varios bytes (23 creo, varía en cada versión)
en el encabezado de cada tuple, y además hay un "line pointer" (4 bytes
creo) por cada tupla en cada página.

(Por lo demás, un bigint usa 8 bytes, no 11, así que no me queda claro
qué significan los números de arriba. Me imagino que está considerando
un encabezado ficticio adicional en cada columna).

Para obtener con más precisión el tamaño de cada registro, lo puedes
examinar de la siguiente forma, tomando el registro completo en vez de
sumar cada columna por separado:

alvherre=# select pg_column_size(row(sales.*)) from sales;
pg_column_size
----------------
48
(1 fila)

(me da 1 fila de resultado porque inserté solo una vez en la tabla)
Lo bueno que tiene hacerlo de esta forma es que además considera el
tamaño real del encabezado del registro.

Luego, 48 + 4 = 52 bytes (los 4 bytes son del line pointer)

Entonces en cada página se pueden poner aprox. 8102 / 52 = 157.

Como son 100.000 registros, dividiendo te dan 100000/157 = 636 páginas.

Siendo cada página de 8k, el resultado es 636 * 8 = 5088 kb

--
Alvaro Herrera http://www.amazon.com/gp/registry/DXLWNGRJD34J
"Pido que me den el Nobel por razones humanitarias" (Nicanor Parra)

In response to

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Jaime Casanova 2009-05-20 20:49:31 Re: Problemas con un check
Previous Message Gilberto Castillo Martínez 2009-05-20 20:41:14 Re: Problemas con un check