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