Optimizacion de DB

Hola shinshan, espero que puedas ayudarme:
Estoy desarrollando una aplicación que registra todos los movimientos que se desarrollan en una área de producción de telas, cada operación de cada maquina existente para cada articulo es registrada en la DB por lo que en tan solo un mes la cantidad de registros es de aprox. 23,000 y cada mes aumenta una cantidad similar.
Para esto mis usuarios tienen que realizar consultas de esa información pero cada vez es más lento el resultado de dichas consultas, quisiera de alguna manera poder agilizar esas consultas.
He investigado algo de Vistas (View) y Procedimientos almacenados (Stored Procedure) pero no tengo aun claro las ventajas y/o desventajas que esto me traería. ¿Podrías orientarme?
De antemano gracias...

2 Respuestas

Respuesta
1
Trabajar con esas cantidades de reistros no debe ser cosa compleja en Oracle (¿supongo qué tu consulta se orienta a esto no?)
Si las consultas que hacen tus usuarios son estructuradas entonces puedes resolverlo creando indices, de manera ORDENADA...
Es decir, creas indices por los campos con valores más generales hasta los que tienen valores más esepcificos y variados.
Si no son estructuradas y más bien son sumarizadas, te recomendaría crear un Sistemas de información OLAP que sumarizen primero en tablas FACT (tablas de Hechos) y consulten contra esto.
Respuesta
1
Vamos por partes.
Las vistas son una forma de acceder a un conjunto de datos distribuidas en distintas tablas, usado para consultas que se realizan con cierta frecuencia. De ésta forma se facilita su tratamiento, pero no agiliza su proceso.
En cuanto a los procedimientos, su principal virtud es que se ejecutan en la máquina Oracle y por lo tanto pueden acceder múltiples usuarios de forma concurrente, facilitando su mantenimiento. No sé hasta que punto el hecho de ejecutarse de forma local proporciona ventajas respecto a una aplicación que ataque a Oracle, pues como tu mismo has podido comprobar, son las consultas las que más tiempo consumen, y éstas van a ser las mismas.
Así pues, te aconsejaría:
- Analizar las consultas y ver por que campos de qué tablas se suele consultar más para filtrar o para hacer join's. Crear índices para estos campos.
- Eliminar los cursores, siempre que sea posible. Ralentizan mucho y mucho la ejecución.
- Analizar la necesidad de consultar información de n tiempo atrás. Aquellos registros que por tiempo sea difícil que se consulten podría ser interesante cada por tiempo moverlos a tablas de históricos, con el fin de reducir drásticamente los registros a analizar por cada consulta. Ésto requerirá un cambio en el diseño de la BD, pero puede valer la pena. Desconozco su estructura, pero puedes analizar si los cambios compensan la mejora de rendimiento.
En fin, éstas son las mejoras que se me ocurren. Espero haberte orientado. Si tienes cualquier duda, no dudes en preguntar.
Hasta la próxima.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas