Escrito por Joan Lluis Roca
El servidor de base de datos actualiza las estadísticas de forma automática según el planificador y un conjunto de políticas de vencimiento. El sistema de actualización automática de estadísticas (AUS) identifica las tablas e índices que requieren nuevas estadísticas y ejecuta la sentencia UPDATE STATISTICS adecuada para optimizar el rendimiento de las consultas, este sistema AUS se apoya en bases de datos transaccionales y el hecho de que las estadísticas estén permanentemente actualizadas y disponibles para el optimizador, garantiza que el rendimiento no se degradará debido a planes de acceso ineficientes.
A veces será necesario ajustar las políticas de vencimiento y/o el planificador para que se adapten a las necesidades del sistema. El sistema AUS se encuentra en la base de datos sysadmin, aunque también puede utilizarse OAT (Open Admin Tool).
Funcionamiento del AUS
AUS utiliza una serie de sensores, tareas, umbrales y tablas para evaluar y actualizar las estadísiticas.
Secuencia de eventos que definen como se actualizan las estadísiticas:
Manejo de las políticas de vencimiento
Para cambiar el valor de una política de vencimiento, se debe actualizar la columna value de la tabla ph_threshold de sysadmin.
Por Ejemplo:
Si detectamos que las consultas lanzadas contra tablas pequeñas de menos de 1000 filas se ejecutan más rápido cuando se actualizan las estadísiticas más frecuentemente, se puede cambiar la política de vencimiento para asegurar que las estadísticas se actualizarán cada semana.
UPDATE ph_threshold SET value = 1000 WHERE name = «AUS_SMALL_TABLES“;
El nuevo umbral estará disponible la próxima vez que se ejecute la tarea Auto Update Statistics Evaluator.
Visualización las sentencias generadas por AUS
Para visualizar las sentencias UPDATE STATISTICS generadas por AUS antes de ser ejecutadas se puede consultar la vista aus_cmd_list y si queremos visualizar las sentencias que se ejecutaron satisfactoriamente la vista aus_cmd_comp.
Ejemplos:
SELECT * FROM aus_cmd_list;
SELECT * FROM aus_cmd_comp;
SELECT aus_cmd_exe, aus_cmd_err_sql, aus_cmd_err_isam FROM aus_command WHERE aus_cmd_state = «E»;
Replanificado del sistema AUS
También se puede cambiar cuando y durante cuánto tiempo se ejecuta la tarea Auto Update Statistics Refresh. Por ejemplo si detectamos que no todas las sentencias UPDATE STATISTICS se ejecutan en el período especificado, o queremos que las estadísticas se actualicen más frecuentemente, podemos cambiar el momento de inicio, de finalización y los días de la semana para ejecutar esta tarea.
UPDATE ph_task SET tk_stop_time = «06:00:00» WHERE tk_name = «Auto Update Statistics Refresh»;
UPDATE ph_task SET tk_monday = «T», tk_tuesday = «T», tk_wednesday = «T», tk_thursday = «T», tk_friday = «T» WHERE tk_name = «Auto Update Statistics Refresh»;
Deshabilitar el sistema AUS
Si deseamos deshabilitar AUS, se deben deshabilitar las tareas Auto Update Statistics Evaluation y Update Statistics Refresh:
UPDATE ph_task SET tk_enable = «F» WHERE tk_name = «Auto Update Statistics Evaluation»;
UPDATE ph_task SET tk_enable = «F» WHERE tk_name = «Auto Update Statistics Refresh»;
TAMBIÉN PODRIA GUSTARTE
¿Tienes alguna pregunta?
Contáctanos ahora