Browse Month: mayo 2011

Slow Performance y Foreign Keys

Cuando una tabla tiene una foreign key sin índice y se produce un DELETE o UPDATE en la tabla padre, un “shared lock” es requerido en la tabla hija. Aunque este bloqueo es liberado inmediatamente después de obtenerse, podemos apreciar una degradación de rendimiento del sistema en DML concurrentes en tablas padre e hija.

Si la foreign key es indexada no se producirán bloqueos de tabla de ningún tipo en la tabla hija como resultado del INSERT, UPDATE o DELETE.

Por esta razón es importante a la hora de crear una foreign key, ver que uso se le va a dar y si es necesario indexarla para evitar problemas de rendimiento en la aplicación.

Este problema me lo he encontrado en algunas aplicaciones, cuando intentaban realizar un DELETE de una fila, el sistema era más lento de lo habitual. Lo mismo ocurría al intentar realizar un import de la misma tabla.

Después de comprobar que el plan de ejecución del DELETE era correcto, activé la traza para la sesión en concreto que estaba realizando la operación y me di cuenta que estaba realizando un FULL TABLE SCAN de la tabla hija, la cual tenía la foreign key sin indexar.

Tan pronto como desactivé la foreign key o creé un índice para dicha foreign key todo empezó a ir mucho más rápido.

Instalación y Desinstalación Oracle Text 10g

Oracle Text está disponible sin licencias adicionales para las cuatro ediciones de base de datos: Oracle Database Standard Edition One, Oracle Database Standard Edition (SE), Oracle Database Enterprise Edition (EE) y Oracle Database Personal Edition.

Instalación manual de of Text 10gR1 (10.1.0.x)

1. Nombre de schema CTXSYS, creado a través de la llamada al siguiente script desde SQL*Plus conectado as SYSDBA:

SQL> connect SYS/password@tns_ as SYSDBA
SQL> spool text_install.txt
SQL> @?/ctx/admin/catctx.sql CTXSYS SYSAUX TEMP NOLOCK Continue Reading