Re: Información: row migration, row chaining, etc....

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Terry Yapt <yapt(at)technovell(dot)com>
Cc: pgsql-es-ayuda <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: Información: row migration, row chaining, etc....
Date: 2010-09-09 15:24:48
Message-ID: 1284045618-sup-3292@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Excerpts from Terry Yapt's message of jue sep 09 11:12:15 -0400 2010:

Hola,

> row-migration, es cuando en Oracle, un UPDATE amplia la cantidad de
> información de forma tal que no cabe en el bloque(s) de disco donde
> antes se encontraba esa fila. Oracle, mueve toda la fila a una nueva
> posición y pone un "puntero" en la ubicación antigua. Con todo lo que
> ello conlleva en el futuro.

OK, como te comentaba esto se hace siempre en Postgres, debido al
concepto del "non-overwriting storage manager".

> row-chaining, es cuando una fila no cabe en un solo bloque de disco
> lógico (blocksize) con el tamaño con el que se ha definido la base de
> datos (en el momento de su creación o de la creación de sus datafiles),
> por tanto, en ese momento, Oracle debe guardar esa fila en más de un
> bloque lógico de información y esto es lo que se denomina row-chaining.
> En el futuro, dependiendo de que información deseemos recoger de la
> fila, Oracle deberá ir de un bloque a otro o no.

Esto no existe en Postgres. Un registro existe siempre en un solo
bloque. Los registros que ocupan más que un bloque son "comprimidos"
usando TOAST: los atributos demasiado grandes se guardan automáticamente
en una tabla aparte (la tabla toast), y en el registro propiamente tal
sólo se guarda un puntero hacia ese otro registro. Este puntero mide
como 20 bytes. Por lo tanto una de las limitaciones de Postgres es que
la cantidad de columnas que puede tener un registro es la cantidad que
se puede almacenar en un solo bloque. Con tipos de datos pequeños
puedes tener 1600 columnas en bloques de 8kB (el tamaño por omisión).
Si los datos requieren un puntero toast, entonces la cantidad de
atributos es menor (creo que puedes tener hasta 200 y tantas columnas).

Hay una explicación más detallada de TOAST en el manual.

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

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Fernando Aguada 2010-09-09 15:27:59 Fw: [OT] Consulta sobre training Postgres en Buenos Aires
Previous Message Terry Yapt 2010-09-09 15:12:15 Re: Información: row migration, row chaining, etc....