Como correr estadisticas en Oracle

junio 7, 2011
admin

Las estadísticas hacen un escaneo completo de los datos y tipos de datos de una tabla y obtiene las mejores formas de realizar una lectura a algún campo determinado, de esta manera hacer que la velocidad de lectura aumente considerablemente, cuando la tabla sufre de muchos cambios es posible que las estadísticas ya no sirvan tan bien y hay que volverlas a ejecutar, esto es para mejorar el performance;

Para correr estadística de una tabla es con el comando
analyze table NOMBRETABLA compute statistics;

para correr estadísticas completas de un esquema* completo es corriendo el paquete*:
EXEC DBMS_UTILITY.analyze_schema(‘USUARIO’,’COMPUTE’);

la diferencia entre un comando y un paquete es que el paquete es un programa echo a base de comandos para realizar funciones mas complejas
la diferencia entre esquema y usuario es que no hay diferencia, al decir “sobre el esquema” me refiero a todas las tablas que le pertenecen a ese usuario

al ponerle el parámetro COMPUTE recrea todas las estadísticas de TODOS los campos, esto hacé que puede que llegue a tardar mucho, dependiendo del tamaño de la tabla

Si en vez de ponerle COMPUTE, se le puede cambiar por ESTIMATE, esto hacé que saca un estimado de cual seria la mejor forma de hacer una lectura, obteniendo datos de una sola porción de la tabla
se puede sacar estimado por numero de campos (rows) o por un porcentaje total de la tabla (percent)
como en el siguiente ejemplo

EXEC DBMS_UTILITY.analyze_schema(‘USUARIO’,’ESTIMATE’, estimate_rows => 100);
EXEC DBMS_UTILITY.analyze_schema(‘USUARIO’,’ESTIMATE’, estimate_percent => 15);

de esta manera la obtención de estadísticas es considerablemente mas rápida, mas no tan eficiente como la COMPUTE, digamos que con un estimate_percent=>20 es 5 veces mas rápido que el compute y se mejora el 80% del performance contra el COMPUTE que tarda 5 veces mas y mejora el 100%
esto dependiendo del tiempo que se tenga disponible para ejecutar estadísticas.

No comments

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *