Blogia
tecnolakis

/*+ APPEND */ pros y contras.

 

/*+ APPEND */ pros y contras.

Recientemente ha caído en mis manos un código PL/SQL (en forma de ‘package’) en el cual se utilizaban profusamente ‘hints’ /*+ APPEND */ en varias partes del mismo, seguidos -claro- de los correspondientes ‘COMMIT’. Esto (hacer ‘commit’ en medio de procesos), dentro de un paquete/procedimiento es algo que, de entrada, repele mis más primarios instintos. Como quiera que pregunté al programador en cuestión y me dijo que lo hacía ‘por rendimiento’, llegué a la conclusión de que muchas veces ciertos programadores ‘oyen campanas y no saben dónde’. Él había oído que así los ‘INSERTS’ corren más, pero no conocía todos los aspectos que, en un entorno real (Base de Datos OLTP con múltiples usuarios), pueden provocar efectos muy perjudiciales.

Vamos a intentar ver las peculiaridades de este ‘hint’ para poder decidir cuando utilizarlo y cuando no.

Para empezar, hay que tener claro qué hace exactamente este ‘hint’: /*+ APPEND */ inserta los datos en los segmentos utilizando bloques nuevos por encima del HWM (High WaterMark). Esto hace que se evite la utilización de segmentos de ‘ROLLBACK/UNDO’, ya que no hay posibidad de que otro usuario registre actividad sobre los mismos. A esto se le llama ‘DIRECT PATH‘. Aquí es (sobre todo si se suma a otros aspectos que pueden también eliminar REDO, como el uso de ‘NOLOGGING’) donde se consigue una mejora en el rendimiento. Esto viene de perlas en el caso de cargas masivas de tablas.

 

 

0 comentarios