Ver Mensaje Individual
  #1  
Antiguo 21-03-2013
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Reputación: 30
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
¿Unir varios disparadores en uno sólo mejora el desempeño de las operaciones?

Hola amigos.

En Firebird 1.5 tengo una tabla con alrededor de 50 campos, 20 disparadores (la mayoría Before / After Insert y Update) y 600 mil registros. Cada mes debe realizarse una operación sobre la misma que agrega y / o modifica unos 20 mil registros. Dependiendo de varios factores, la operación puede durar desde unos minutos hasta varias horas (conlleva muchos cálculos y validaciones y no todo se hace en la base de datos). Tiempos que son aceptables, pero que he conseguido reducirlos retocando varias partes de la aplicación y de la base de datos. Durante esta tarea se me ocurrió la idea de que, probablemente, si uniera varios de esos disparadores en uno sólo el proceso podría demorar un poco menos.

Mi duda concreta y la razón por la cual inicio este hilo es preguntarles si, en su experiencia o conocimiento de Firebird u otras bases de datos, tiene algún beneficio de velocidad significativo sustituir, digamos, varios disparadores Before Insert de una tabla como esta por un sólo disparador Before Insert que haga las mismas tareas. O si, por el contrario, el procesamiento se volvería más lento.

No quiero comenzar a modificar los disparadores de la tabla sin antes tener la certeza de si sería una buena idea. Y hacer pruebas con una tabla o base de datos paralela me da dolor de espalda apenas pensarlo (sí que se vuelve uno flojo con los años ).

Si alguien de Club Delphi ya ha pasado por experimentar de esa manera con los disparadores, bienvenido sea su testimonio. Mientras voy a seguir con otras cosas de la chamba.

De antemano gracias.
Responder Con Cita