jueves, 2 de abril de 2009

PL/SQL: Performance: Operaciones Bulk

El lenguaje PL/SQL es muy poderoso pero creo que usamos un porcentaje muy bajo de las capacidades que tiene. Por ejemplo, el uso de bulk en sentencias SQL es muy poco aprovechado. Adjunto un ejemplo donde se nota la diferencia entre el uso de un cursor normal y el uso del bulk. Extrapolando, si el cursor se demora 2 minutos en ejecutar, el bulk puede demorarse hasta 5 segundos aproximadamente. Ver ejemplo forall_insert.txt La salida de la ejecución de este script es: forall_insert.out.txt El resultado de la ejecución es:
***************************
Execution Time (secs)                                                   
---------------------                                                   
Total regs:250.000                                                      
FOR LOOP: 130
FORALL: 5
***************************
El tiempo total para insertar 250000 registros usando insert-cursor es de 130 segundos, en cambio, el bulk insert se demoró solo 5 segundos. Observación: El uso de colecciones consume memoria del servidor así que hay que jugar entre el uso de recursos y el tiempo de ejecución

No hay comentarios:

Publicar un comentario