Al González
21-03-2013, 02:50:55
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 :p).
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. :)
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 :p).
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. :)