Re: sobre savepoints

From: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
To: Linos <info(at)linos(dot)es>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: sobre savepoints
Date: 2008-08-01 00:50:09
Message-ID: 20080801005009.GQ8497@alvh.no-ip.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-es-ayuda

Linos escribió:

> begin ----- savepoint ---- insert ---- releasesavepoint ---- savepoint
> ---- insert ----- releasesavepoint ---- savepoint --- insert(error) ---
> rollback to savepoint --- update --- releasesavepoint --- 20000 registros
> mas ---- commit
>
> Lo cual a traves de una linea lenta ralentiza considerablemente. Supongo
> que debe haber alguna manera mejor de hacer esto que evidentemente yo no
> conozco, se puede desactivar este modo para que la transaccion siga con
> un error hasta que yo haga un rollback especifico?

No. Todos los errores dejan la transaccion en estado "abortado", del
cual solo puedes salir abortandola completamente o bien con ROLLBACK TO
savepoint.

(Efectivamente lo que el codigo hace es un "rollback automatico"
internamente)

> otra manera que habia pensado es hacer una funcion para los inserts (q
> cambiara a update si existe el registro) pero las columnas cambian no
> solamente para cada tabla si no a veces en cada insert, se generan
> con unos triggers automaticamente y no se si se podria hacer o incluso
> si interesaria hacerlo. Me podrian echar un cable con esto? gracias.

Si el problema es la cantidad extra de ordenes que tienes que enviar
desde el cliente, creo que seria una ganancia enorme hacerlo en una
funcion del lado del servidor, usando bloques EXCEPTION. Ahora, tienes
que tener en cuenta que EXCEPTION crea un nuevo savepoint cada vez, asi
que si la ralentizacion viene por el lado de crear los savepoints (lo
cual no seria raro, porque los savepoints son relativamente lentos)
entonces va a seguir siendo un cuello de botella.

Lo otro que podrias hacer, quizas, es intentar con PGLoader.

--
Alvaro Herrera http://www.flickr.com/photos/alvherre/
"Changing the world ... one keyboard at a time!"
(www.DVzine.org)

In response to

Responses

Browse pgsql-es-ayuda by date

  From Date Subject
Next Message Linos 2008-08-01 01:36:46 Re: sobre savepoints
Previous Message Linos 2008-08-01 00:16:58 sobre savepoints