Hola.
La forma más evidente de recuperar la memória, es cerrar la conexión y volverla a abrir. Respecto a limitar la memória que pueda usar la solicitud, yo no lo intentaría, puesto que está claro que necestia mucha memória para atender al procedimiento, y si no puede disponer de ella, tendrá que utilizar archivos temporales en el servidor, cuanto más proceso se pueda ejecutar sobre memória, antes terminará.
Respecto al uso del 100% de la CPU, ¿ es un problema ?. Está claro que cuanta más CPU se destine al proceso, antes terminará.
En todo caso, visto la cantidad de memória consumida, y tiempo del procesador, ¿ estás seguro que has definido los índices adecuados para agilizar el proceso ?. Una consulta típica en tu ejemplo es :
SELECT "Expenses" FROM "PayFunctDeg" WHERE "Code" = :in_mt_function AND "Degree" = :in_mt_degree AND "Year" = :in_in_refyear INTO :refvalue
Si defines un índice en la tabla PayFunctDeg, que contenga los campo Code, Degree y Year, agilizas de una forma drástica su ejecución. (Tanto en CPU como en Memoria).
Para comprobar que no necesitas ningún índice, comprueba los PLANes de ejecución de las consultas involucradas.
Saludos.
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
|