Según su experiencia, ¿con qué frecuencia deben ejecutarse las estadísticas de la base de datos Oracle? Nuestro equipo de desarrolladores descubrió recientemente que las estadísticas no se habían ejecutado en nuestra caja de producción en más de 2 meses y medio. Eso me parece mucho tiempo, pero no soy un DBA.¿Con qué frecuencia deben ejecutarse las estadísticas de la base de datos Oracle?
Respuesta
En mi último trabajo corrimos estadísticas una vez a la semana. Si mal no recuerdo, los programamos un jueves por la noche y el viernes los DBA fueron muy cuidadosos de monitorear las consultas de más larga duración para cualquier cosa inesperada. (El viernes fue elegido porque a menudo era justo después del lanzamiento del código, y tendía a ser un día de poco tráfico). Cuando veían una mala consulta, encontraban un mejor plan de consulta y guardaban ese para que no cambiara inesperadamente. . (Oracle tiene herramientas para hacer esto automáticamente, usted le dice a la consulta que optimice y lo hace.)
Muchas organizaciones evitan ejecutar estadísticas por temor a que los planes de mala consulta aparezcan inesperadamente. Pero esto generalmente significa que sus planes de consulta empeoran y empeoran con el tiempo.Y cuando sí ejecutan estadísticas, se encuentran con una serie de problemas. La lucha resultante para solucionar esos problemas confirma sus temores sobre los peligros de la ejecución de estadísticas. Pero si ejecutaran estadísticas regularmente, utilizaran las herramientas de supervisión como se supone que debían hacerlo, y corrigieran los problemas a medida que aparecían, entonces tendrían menos dolores de cabeza y no los encontrarían todos a la vez.
Cada vez que los datos cambian "significativamente".
Si una tabla va de 1 fila a 200 filas, es un cambio significativo. Cuando una tabla va de 100,000 filas a 150,000 filas, no es un cambio terriblemente significativo. Cuando una tabla va de 1000 filas, todas con valores idénticos en la columna de consulta común X a 1000 filas con valores casi únicos en la columna X, eso es un cambio significativo.
Estadísticas almacenan información sobre recuentos de elementos y frecuencias relativas, cosas que le permitirán "adivinar" cuántas filas coincidirán con un criterio determinado. Cuando adivine mal, el optimizador puede elegir muy plan de consulta subóptimo.
¿Qué versión de Oracle está utilizando? Compruebe esta página, que se refiere a Oracle 10:
http://www.acs.ilstu.edu/docs/Oracle/server.101/b10752/stats.htm
Dice:
El método recomendado para la recolección de estadísticas es permitir que Oracle para recoger automáticamente las estadísticas. Oracle recopila estadísticas sobre todos los objetos de la base de datos automáticamente y mantiene esas estadísticas en un trabajo de mantenimiento programado regularmente.
Cuando gestionaba un gran sistema de planificación multiusuario respaldado por Oracle, nuestro DBA tenía un trabajo semanal que reunía estadísticas. Además, cuando lanzamos un cambio significativo que podría afectar o ser afectado por las estadísticas, obligaríamos al trabajo a quedarse sin ciclo para que las cosas se pongan al día.
Asegúrese de equilibrar el riesgo de que las nuevas estadísticas provoquen cambios no deseados en los planes de consulta, con el riesgo de que las estadísticas obsoletas puedan provocar cambios en los planes de consulta.
Imagine que tiene una base de datos de errores con una tabla ISSUE y una columna CREATE_DATE donde los valores en la columna aumentan más o menos monótonamente. Ahora, suponga que hay un histograma en esta columna que le dice a Oracle que los valores de esta columna se distribuyen de manera uniforme entre el 1 de enero de 2008 y el 17 de septiembre de 2008. Esto permite que el optimizador calcule razonablemente el número de filas que ser devuelto si estaba buscando todos los problemas creados la semana pasada (es decir, del 7 al 13 de septiembre). Sin embargo, si la aplicación continúa utilizándose y las estadísticas nunca se actualizan, este histograma será cada vez menos preciso. Por lo tanto, el optimizador esperará que las consultas para "problemas creados la semana pasada" sean cada vez menos precisas con el tiempo y puede eventualmente hacer que Oracle cambie el plan de consulta de forma negativa.
En el caso de un sistema tipo depósito de datos, puede considerar no recopilar ninguna estadística y confiar en el muestreo dinámico (configuración optimizer_dynamic_sampling al nivel 2 o superior).
Con una versión 10g y superior de Oracle, el optimizador necesita estadísticas actualizadas sobre tablas e índices para tomar una decisión de plan de ejecución "buena". La frecuencia con la que recopile estadísticas es una llamada complicada. Depende de su aplicación, esquema, velocidad de datos y práctica comercial. Algunas aplicaciones de terceros que están escritas para ser compatibles con versiones anteriores de Oracle no funcionan bien con el nuevo optimizador. Esas aplicaciones requieren que las tablas no tengan estadísticas para que el db recurra al plan de ejecución de la base de reglas. Pero en promedio, Oracle recomienda que las estadísticas se recopilen en tablas con estadísticas obsoletas. Puede configurar tablas para monitorear y verificar su estado y hacer que analicen si están obsoletas. A menudo eso es suficiente, algunas veces no lo es. Realmente depende de tu base de datos. Para mi base de datos, tenemos un conjunto de tablas OLTP que necesitan recopilación de estadísticas nocturnas para mantener el rendimiento. Otras tablas se analizan una vez a la semana. En nuestra gran base de datos dw, analizamos según sea necesario, ya que las tablas son demasiado grandes para un análisis regular sin afectar la carga y el rendimiento general de la base de datos. Entonces, la respuesta correcta es que depende de la aplicación, el cambio de datos y las necesidades comerciales.
Dado que las estadísticas de Oracle 11g se recopilan automáticamente de forma predeterminada.
dos ventanas Programador están predefinidos en la instalación de bases de datos Oracle:
- WEEKNIGHT_WINDOW comienza a las 10 p.m. y termina a las 6 a.m. todos los lunes hasta el viernes.
- WEEKEND_WINDOW cubre sábados y domingos todos los días.
¿Cuándo se recopilaron las estadísticas por última vez?
SELECT owner, table_name, last_analyzed FROM all_tables ORDER BY last_analyzed DESC NULLS LAST; --Tables.
SELECT owner, index_name, last_analyzed FROM all_indexes ORDER BY last_analyzed DESC NULLS LAST; -- Indexes.
¿Estado de la recopilación automática de estadísticas?
SELECT * FROM dba_autotask_client WHERE client_name = 'auto optimizer stats collection';
Windows Groups?
SELECT window_group_name, window_name FROM dba_scheduler_wingroup_members;
¿Horario de la ventana?
SELECT window_name, start_time, duration FROM dba_autotask_schedule;
reúnen manualmente Base de Estadísticas en este esquema:
EXEC dbms_stats.gather_schema_stats(ownname=>NULL, cascade=>TRUE); -- cascade=>TRUE means include Table Indexes too.
reúnen manual de bases de datos estadísticas en todos los esquemas!
-- Probably need to CONNECT/AS SYSDBA
EXEC dbms_stats.gather_database_stats;
En general no se recomienda para recopilar estadísticas, tan frecuentes en toda la base de datos a menos que tenga una fuerte justificación para que, como una inserción masiva o gran cambio de datos suceder con frecuencia en la base de datos. reuniendo estadísticas en la base de datos en esta frecuencia PUEDE cambiar el plan de ejecución de consultas a un nuevo plan de ejecución deficiente, la cosa puede costarle mucho tiempo tratando de ajustar cada consulta afectada por los nuevos planes pobres, es por eso que debe probar el impacto de reuniendo nuevas estadísticas en una base de datos de prueba, o en caso de que no tenga el tiempo o el poder humano para eso, al menos debe mantener un plan alternativo respaldando la estática original antes de reunir nuevas, de modo que en caso de que se reúna una nueva estadística y luego las consultas no funcionaron como se esperaba, puede restaurar fácilmente las estadísticas originales.
Hay una secuencia de comandos muy útil que puede ayudar a hacer una copia de seguridad de las estadísticas originales y recopilar nuevas y proporcionarle un comando SQL que puede utilizar para restablecer la estática original en caso de que no funcione como se esperaba después de recopilar nuevas estadísticas. Puede encontrar la secuencia de comandos en este enlace: http://dba-tips.blogspot.com/2014/09/script-to-ease-gathering-statistics-on.html
- 1. ¿Fingir las estadísticas de Oracle?
- 2. google play - ¿Con qué frecuencia las estadísticas de la consola de desarrollo actualiza
- 3. ¿Con qué frecuencia se actualizan las estadísticas de la aplicación Market?
- 4. ¿Con qué frecuencia debo cerrar las conexiones a la base de datos?
- 5. MongoDB: ¿con qué frecuencia debe abrir y cerrar la base de datos? ¿Por qué?
- 6. ¿Con qué frecuencia se actualizan las estadísticas de ventas en iTunes Connect?
- 7. Qué permisos deben tener los Desarrolladores en la instancia de la base de datos Dev.
- 8. ¿Por qué usaría la base de datos Oracle?
- 9. Enlace de la base de datos Oracle
- 10. ¿Con qué frecuencia se deben definir las excepciones personalizadas en python?
- 11. oracle: ¿qué afirmaciones se deben comprometer?
- 12. Insertar blob en la base de datos Oracle con C#
- 13. Conectarse a la base de datos Oracle con C++
- 14. ¿Dónde está la base de datos Oracle Bug?
- 15. Control de fuente de base de datos con Oracle
- 16. ¿Con qué frecuencia se actualiza una vista de base de datos en MySQL?
- 17. Uso de la sugerencia de Oracle "FIRST_ROWS" para mejorar las prestaciones de la base de datos Oracle
- 18. Insertar datos en la base de datos Oracle utilizando php
- 19. recopilación de datos para estadísticas: de la web a una base de datos
- 20. Caché de secuencia de Oracle viejo con demasiada frecuencia
- 21. Diseño de la base de datos: ¿se deben evitar las relaciones uno a uno?
- 22. ¿Con qué frecuencia deberían reconstruirse los índices en nuestra base de datos SQL Server?
- 23. Cómo deshabilitar la confirmación automática en las Herramientas de la base de datos Eclipse para Oracle?
- 24. ¿Con qué frecuencia google analytics actualiza los datos de tráfico?
- 25. Crear copias de las tablas de la base de datos Oracle en una base de datos SQLite
- 26. Node.js + Base de datos Oracle 9i
- 27. ¿Cómo visualizo las estadísticas de consulta de base de datos en el sitio de Wordpress?
- 28. ¿Las clases de dominio de Grails deben estar vinculadas a una base de datos?
- 29. ¿Qué son las restricciones de la base de datos?
- 30. Encontrar restricción fantasma de la base de datos Oracle