Oracle - Ayuda con Oracle Update lento!!!

 
Vista:

Ayuda con Oracle Update lento!!!

Publicado por jotilio (3 intervenciones) el 22/10/2008 08:26:18
Hola a Todos:

Que tal va todo ? Espero que bien . . .

Necesito ayuda !!!

Estoy desarrollando una aplicación en C/Pro*C con SO UNIX y Oracle 10g.

Se trata de una aplicación ( C/Pro*C ) que lee de unas tablas de la base de datos y las lecturas realizadas las pasa a variables auxiliares.

Con dichos valores ejecuta un algoritmo de cálculo mas o menos complejo en base al caso que sea y los resultados los vuelve a dejar de nuevo en las tablas de las que inicialmente leyó.

Pues bien estoy teniendo problemas en lo que se refiere a la escritura de los datos.

Antes las tablas utilizadas eran unas 60 y en total en cada scan de la aplicacion se
actualizaban unas 28 tablas ( aprox unas 8500 columnas entre todas y en cada columna unas 300 filas). Todas las operaciones de escritura eran UPDATE y el ciclo duraba unos 3sg.

Hemos realizado una reestructuración de la base de datos y de la aplicación y ahora se ha
quedado en 6 tablas de aproximadamente unas 60 columnas entre todas.

Cuando pusimos esta nueva versión de la aplicacion en marcha, el funcionamiento era
practicamente instantaneo, ( unos 300msg cada "ciclo", esto incluye lectura de todas las
tablas + aplicacion del algoritmo de calculo de los datos leidos + escritura de los
resultados de nuevo en las tablas ), pero cuando ésta llevaba funcionando aprox. 2 horas,
ha empezado a ir cada vez mas lento, llegando a medir en cada "scan de la aplicación"
aprox. 10sg.

Las tablas en las que escribo, apenas tienen 80-100 filas. He creado indices para la
escritura, pero no se nota mejoría ninguna.

Es posible que exista algún . . . algo . . . que se llene al cabo de un tiempo y esto
condicione en adelante el funcionamiento de la base de datos ?

Actualmente tengo las dos aplicaciones funcionando a la vez, pero si dejo solamente la
nueva versión pasa exactamente lo mismo.

Tambien he probado a eliminar los UPDATE y a dejar solamente INSERT . . . ( por si la instruccion insert es "mas limpia" y al crear nuevas filas es más rápida que los UPDATE que tienen que buscar las columnas indicadas en base al WHERE que le pongas ). Pero sigue igual.

Alguna idea de por qué puede ser esto ?

Muchas Gracias y Saludos!!
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Ayuda con Oracle Update lento!!!

Publicado por Adrian Trejo (7 intervenciones) el 24/10/2008 07:28:36
Antes que nada si tu problema es I/O en update ,yo no crearia mas indices por que :

1.- Imaginate voy actualizar 10 tablas y cada tabla tiene 10 columnas y cada columna tiene indice , tu prg. por muy bueno que sea va y busca un registro actualiza la información y despues actualiza todos los indices.

Creo yo que tu problema no esta en crear mas indices sino en como utilizas esos indices, te sugiero correr ese prg. y monitorearlo , dentro de EM enterprice manager lo puedes hacer y ahi te va a dar a detalle que esta haciendo tu programa , si estas utilizando otra versión existe tkprof con esto puedes monitorear el desempeño de tu prg.

Si gustas mandame por mail las instrucciones de sql, la estructura de las tablas incluyendo los indices y la cantidad de registros que contiene cada tabla, si pudieras mandarme el desarrollo del programa con la herramienta que te comento y te puedo ayudar a resolver tu problema.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar