PostgreSQL - Multiples querys en bloque o funcion

 
Vista:
Imágen de perfil de Manuel

Multiples querys en bloque o funcion

Publicado por Manuel (1 intervención) el 12/02/2022 00:05:31
Tengo una función que ejecuta varios querys, algo similar a la mostrada, el problema que tengo es que cuando ejecuto la función, tarda muchísimo, pero si ejecuto cada query individualmente no pasa de 1 segundo cada uno, digamos que cuando los ejecuto individualmente todos tardo como 5 segundos aproximadamente, pero a la hora de ponerlo en la función para que se ejecuten en bloque se tarda como 4 o 5hrs.
Me da la impresión de que es por memoria o algo asi, hay algún comando o instrucción que le pueda poner donde ejecute el primer query termine, libere memoria y luego siga con el segundo? o que podría estar pasando que se tarda mucho.

agradezco sus posibles respuestas.



CREATE OR REPLACE FUNCTION public.funcion_ejemplo(
)
RETURNS void
LANGUAGE 'plpgsql'
COST 100
VOLATILE PARALLEL UNSAFE
AS $BODY$

begin

insert... ; -- query1
update...; -- query2
update...; -- query3
update...; -- query4
update...; -- query5

end;
$BODY$;
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Francisco
Val: 256
Oro
Ha mantenido su posición en PostgreSQL (en relación al último mes)
Gráfica de PostgreSQL

Multiples querys en bloque o funcion

Publicado por Francisco (110 intervenciones) el 22/02/2022 16:14:51
Hola

Una pregunta simple que no es facil de responder.

1.- Cantidad de Indices: cuantos indices estan activos en las tablas involucradas
2.- Cuanta memoria tiene tu servidor
3.- Le has hecho alguna entonacion: https://pgtune.leopard.in.ua/#/
4.- Los UPDATE tienen alguna restriccion WHERE ?, si es asi un EXPLAIN ANALYZE (buffers) te mostrara el plan de ejecucion y la cantidad de memoria que usara
5.- Todo lo que este entre un BEGIN y un END se toma como un TRANSACTION por lo tanto hasta que no se ejecuten todas las sentencias y el POSTGRES los de por valido hara un COMMIT automaticamente.si el AUTOCOMMIT esta activo


Saludos
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar