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

Re: sobre savepoints

From: Linos <info(at)linos(dot)es>
To: Alvaro Herrera <alvherre(at)alvh(dot)no-ip(dot)org>
Cc: Lista PostgreSql <pgsql-es-ayuda(at)postgresql(dot)org>
Subject: Re: sobre savepoints
Date: 2008-08-01 01:36:46
Message-ID: 489268AE.30904@linos.es (view raw or flat)
Thread:
Lists: pgsql-es-ayuda
tambien podria dentro de la funcion quizas lanzar primero el select y segun lanzar un 
insert o un update, no? deberia ser mas rapido que el savepoint? lo que no se como 
resolver en plpsql es el tema del numero de columnas variable pero supongo q habra alguna 
forma, no?

Alvaro Herrera escribió:
> 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.
> 


In response to

Responses

pgsql-es-ayuda by date

Next:From: LinosDate: 2008-08-01 01:42:26
Subject: Re: sobre savepoints
Previous:From: Alvaro HerreraDate: 2008-08-01 00:50:09
Subject: Re: sobre savepoints

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