Analyze en bd oracle

Estimado GGutierrez Al detectar un retardo fuera de lo normal en la respuesta de algunos SELECT'S detecte que no tenia activados los histogramas para ninguna de mis tablas, así es que ejecute:
ANALYZE TABLE mitabla COMPUTE STATISTICS;
Para todas las tablas de mi usuario.
Aparentemente solucioné el problema de lentitud, pero, mi pregunta es:
¿Habré creado otros problemas para la base al aplicar el comando a todas mis tablas?
¿Cuál seria el criterio a seguir para aplicar este comando, tamaño? ¿Accesos? ¿Tipo de tabla? (Detalle - maestro - catalogo)

1 Respuesta

Respuesta
1
Normalmente el criterio para aplicarle analyze a las tablas de tu sistema es el hecho de que tengas el Optimizador de la BD en COSTOS o CHOOSE.
Si tu BD esta en CHOOSE (Parámetro OPTIMIZER_MODE en el init<SID>. Ora), entonces puedes correr el analyze a las tablas que juzgues necesarias; otro criterio que se suma a esto es que puedes hacer el analyze de las tablas de tu sistema, es decir, las que sirven a tu aplicación, pero no es recomendable que le ejecutes el analyze a las tablas de catálogo, o sea a las de SYS o SYSTEM. Ya que ellas funcionan mejor si no tienen calculadas las estadísticas.
Si le ejecutaste las estadisticas a las tablas de SYS o SYSTEM, entonces debes borrarselas. El comando es analyze table <TABLA> delete statistics;
Muchas gracias, solo algo más. En mi archivo de INIT no tengo definido el parámetro optimizer_mode pero si funcionó porque si se agilizó sustancialmente el tiempo de respuesta. Por otro lado, tengo otras tablas del mismo usuario pero de diferente modulo que si tienen histogramas a selección del instalador original.
Y no, no lo hice para los usuarios nativos de la base, solo lo hice para las tablas del usuario de trabajo creado por nosotros.
Mi pregunta sobre las tablas se refería a los catálogos propios de mi aplicación, perdón por no explicarlo desde el principio.
Como ejemplo: tu crees que deba ejecutar el comando del que hablamos, para el catalogo de clientes en un sistema de cuentas por cobrar, o tal vez solo a la tabla de movimientos históricos. Tomando en cuenta que mi catalogo de clientes tiene pocos cambios pero si accesos continuos de consulta.
Por tu amable atención y la velocidad con que respondiste, te repito mil gracias.
Saludos amigo Ggutierrez.
Desde luego que si; tu puedes ejecutarle las estadísticas a cualquier tabla de usuario que desees, pero recuerda que no siempre el ANALYZE te resuelve el problema, en ocasiones hace falta que entones los queries de la aplicación. Ten encuenta lo siguiente para esas nuevas tablas a las que deseas calcular las estadísticas: verifica primero si las mismas tienen índices y si los queries que corren sobre ellas sacan provecho de esos índices.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas