From: | Terry Yapt <yapt(at)technovell(dot)com> |
---|---|
To: | Alvaro Herrera <alvherre(at)commandprompt(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-10 22:46:58 |
Message-ID: | 4C8AB562.6040108@technovell.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El 09/09/2010 20:45, Alvaro Herrera escribió:
> 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).
>
Gracias Alvaro.... mucho más claro.
Aunque revisaré más a fondo el asunto de HOT prune, pues tal y como lo
planteas, prefiero el "modo de hacer" de PostgreSQL, a pesar de que
comentas que HOT prune ha tenido un buen efecto en PostgreSQL.
From | Date | Subject | |
---|---|---|---|
Next Message | Martin Li Causi | 2010-09-11 17:02:55 | Re: Ayuda |
Previous Message | Carlos Edward Grajales Marmolejo | 2010-09-10 20:27:51 | Re: Saber si es Sabado o Domingo |