Skip site navigation (1) Skip section navigation (2)

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 (view raw or flat)
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

pgsql-es-ayuda by date

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

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group