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