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 18:45:32
Message-ID: 1284057474-sup-7089@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:38:41 -0400 2010:
> El 09/09/2010 17:24, Alvaro Herrera escribió:
> > 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".
>
> Entonces creo que la diferencia estriba en el posterior VACUUM de
> PostgreSQL (que Oracle no tiene) y que eliminará ese "puntero" (fila vacía).

Efectivamente.

La aproximación tomada por Oracle es que la transacción que modifica la
fila se debe hacer cargo del trabajo de mover la versión antigua al
segmento rollback y demás limpieza. La aproximación de Postgres es que
es mejor dejarlo así y que el proceso que está atendiendo al cliente
pueda retornar lo más rápido posible; y que otro proceso, que no es
de rendimiento crítico para nadie puesto que no tiene un cliente
conectado, se hace cargo de la limpieza.

Originalmente en Postgres tenías que estar haciendo vacuum a mano o vía
crontab, y era bastante complicado o perdías rendimiento. A medida que
autovacuum ha ido mejorando, los problemas han disminuido drásticamente.

La verdad es que visto de esta forma, para mí es claro cuál de las dos
aproximaciones es la mejor.

(Lo otro que ha tenido efecto significativo en el buen rendimiento de
Postgres en esta área es la invención de la funcionalidad HOT, que
permite hacer una especie de vacuum en cada página cuando es necesario,
que es lo que se llama una "poda" de HOT, o "HOT prune". Esto acerca un
poco la aproximación de PostgreSQL a la de Oracle, pues quien está a
cargo de hacer esta limpieza es aquel proceso que quiera examinar la
página en cuestión).

--
Á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 20:10:52 Off Topic - Probando el correo
Previous Message Ernesto Lozano 2010-09-09 15:38:51 Re: [OT] Consulta sobre training Postgres en Buenos Aires