/ / ¿Por qué están bloqueadas las estadísticas de la tabla? - oracle11g, base de datos de rendimiento

¿Por qué están bloqueadas las estadísticas de la tabla? - oracle11g, base de datos de rendimiento

Estoy confundido porque las estadísticas no se recopilan para algunas tablas en muchos esquemas. Estas tablas se analizaron la última vez durante la noche, supongo que se hizo por trabajo trabajo de estadísticas de auto optimizador que está habilitado. Me di cuenta de esto cuando intenté recopilar estadísticas manualmente al recibir:

ora-20005 object statistics are locked

After Tuning Advisor ordenó recopilar estadísticas para consultas de larga ejecución.

¿Qué podría bloquear estas estadísticas? ¿Se podría desactivar por defecto? Asumo que nadie hizo esto porque no hay beneficio de tal comportamiento en una perspectiva a largo plazo.


Después de algunas investigaciones encontré una respuesta parcial: https://blogs.oracle.com/optimizer/entry/maintaining_statistics_on_large_partitioned_tables

También descubrí que las estadísticas están bloqueadas para la tabla particionada por el procedimiento de partición que se ejecuta cada noche, hay una línea:

dbms_stats.lock_table_stats(...)

Me pregunto si es buena o mala práctica. Supongo que hace algún tiempo fue bueno, pero desde Oracle 11g no tiene ningún sentido. Trataré de introducir el enfoque con el Mantenimiento Incremental de Estadísticas (documentos) en lugar de deshabilitar la recopilación de estadísticas globales, que creo que es una idea DEPRECTA ...

Respuestas

4 para la respuesta № 1

¿Por qué crees que "no tiene ningún sentido en absoluto"?

Bloquear las estadísticas no es ni bueno ni malopráctica. Todo depende de por qué los está bloqueando. Presumiblemente, en el pasado, alguien identificó algún tipo de problema que bloqueaba las estadísticas resueltas. Necesitaría averiguar qué problema era y si sigue siendo un problema. Si tiene tablas con grandes cantidades de datos transitorios, por ejemplo, es posible que desee recopilar estadísticas cuando las tablas estén relativamente llenas y bloquear las estadísticas para que el trabajo de recopilación automática de estadísticas no se ejecute accidentalmente cuando las tablas están casi vacías y causan La tabla es muy costosa cuando la tabla está llena.

Si el problema que se estaba resolviendo era esela recopilación de estadísticas globales en la tabla con particiones fue lenta, por lo que potencialmente el uso de estadísticas incrementales sería una mejor solución. Sin embargo, dado que el mantenimiento de estadísticas incrementales no es el comportamiento predeterminado, sería incorrecto considerar enfoques alternativos como "obsoletos". Particularmente cuando tienes una solución existente que satisface tus necesidades.