Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Sql tuning without trying arup nanda ls

289 views

Published on

Optimización de SQL sin esfuerzo

Published in: Engineering
  • Login to see the comments

  • Be the first to like this

Sql tuning without trying arup nanda ls

  1. 1. Copyright © 2014, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | Optimización de SQL sin esfuerzo Arup Nanda Principal Database Architect Starwood Hotels Marzo de 2016 Aguarde un momento por favor. La sesión comenzará en breve en el horario señalado en el programa. Muchas gracias.
  2. 2. Optimización de SQL sin esfuerzo 2
  3. 3. Optimización de SQL sin esfuerzo 3 El desarrollador debería haberse ocupado de esto. ¿Por qué el DBA no es consciente de este problema? El DBA revisará todas las consultas y las aprobará. DBA Desarrollador Gerente
  4. 4. Por qué un buen sistema SQL empieza a funcionar mal... • Estadísticas inexistentes, incompletas o inexactas • Indexación inadecuada o inexistente • Errores de sintaxis – WHERE COL1+20 = COL2 – WHERE UPPER(COL1) = ‘XYZ’ Optimización de SQL sin esfuerzo 4
  5. 5. Por qué un buen sistema SQL empieza a funcionar mal • Gran demanda de búferes de datos • Bind peeking [inspección de variables de enlace] • Actualizaciones, revisiones Optimización de SQL sin esfuerzo 5
  6. 6. Soluciones... • Agregar o corregir índices – Índice inexistente – ¿Es adecuado el índice de árbol B? ¿El de mapa de bits? ¿Uno único? • Reescribir el código SQL – P. ej. col1+10=:v1 se reemplaza por col1=:v1-10 – De combinación de bucle anidado a combinación hash Optimización de SQL sin esfuerzo 6
  7. 7. Soluciones • Reducir la cantidad de E/S – Vistas materializadas – Trabajo con particiones • Recopilar estadísticas precisas • Incorporar hints [sugerencias] • Crear outlines [esquemas descriptivos] Optimización de SQL sin esfuerzo 7
  8. 8. Desafíos... • No es fácil determinar por qué los planes no funcionan, por lo menos no rápidamente • Se requieren competencias de desarrollo – No alcanzan las competencias habituales del DBA • Son muchas las instrucciones para optimizar • Tiempo – Casi siempre se aplica un enfoque reactivo – Hágalo ahora. Bajo presión. Optimización de SQL sin esfuerzo 8
  9. 9. Desafíos • No forma parte del ciclo de implementación de aplicaciones • El código no puede modificarse, no hay hints • Pruebas insuficientes – Tiempo – Recursos Optimización de SQL sin esfuerzo 9
  10. 10. Perfil de SQL Los hints se agregan automáticamente a las consultas Se cuenta con más información sobre los objetos, datos, etc., a los que se accede Optimización de SQL sin esfuerzo 10
  11. 11. <outline_data> <hint><![CDATA[BEGIN_OUTLINE_DATA]]></hint> <hint><![CDATA[IGNORE_OPTIM_EMBEDDED_HINTS]]></hint> <hint><![CDATA[OPTIMIZER_FEATURES_ENABLE('11.2.0.3')]]></hint> <hint><![CDATA[DB_VERSION('11.2.0.3')]]></hint> <hint><![CDATA[OPT_PARAM('optimizer_dynamic_sampling' 7)]]></hint> <hint><![CDATA[ALL_ROWS]]></hint> <hint><![CDATA[OUTLINE_LEAF(@"SEL$2")]]></hint> <hint><![CDATA[OUTLINE_LEAF(@"SEL$1")]]></hint> <hint><![CDATA[NO_ACCESS(@"SEL$1" "from$_subquery$_001"@"SEL$1")]]></hint> <hint><![CDATA[INDEX_RS_ASC(@"SEL$2" "CH"@"SEL$2" (“T1".“COL1“ “T1".“COL2“ “T1".“COL3"))]]></hint> <hint><![CDATA[OPT_ESTIMATE(@”SEL$1″, TABLE, “T”@”SEL$1″, SCALE_ROWS=0.15")]]></hint> <hint><![CDATA[END_OUTLINE_DATA]]></hint> </outline_data> Optimización de SQL sin esfuerzo 11
  12. 12. Cómo selecciona un perfil Oracle Optimización de SQL sin esfuerzo 12 perfil1 perfil235 seg. 17 seg. El perfil 2 es mejor perfil1 perfil2No termina nunca 17 seg. Ejecución riesgosa perfil1 perfil2 35 seg. 17 seg. El perfil 2 es mejorEjecución en paralelo
  13. 13. Optimización de SQL sin esfuerzo 13 perfil1 perfil2 No termina No hay ganador 15 seg. No termina perfil1 perfil2 No termina El perfil 2 es mejor 30 seg. Termina tras 17 seg. 30 seg. 15 seg.
  14. 14. Cómo incorporar perfiles de SQL • SQL Tuning Advisor – Herramienta incorporada para optimización de SQL – Puede proponer alternativas, algunas muy buenas Optimización de SQL sin esfuerzo 14
  15. 15. • La herramienta STA propone: – Índices – Posibilidades de reescritura – Vistas materializadas – Trabajo con particiones Optimización de SQL sin esfuerzo 15 – Estadísticas – Perfiles de SQL – Líneas de base
  16. 16. SQL Tuning Advisor • Desde el menú superior -> Administration [administración] - > Oracle Scheduler - > Automated Maintenance Tasks [tareas de mantenimiento automatizado] Optimización de SQL sin esfuerzo 16
  17. 17. Funcionamiento automático • Funcionamiento automático desde Oracle 11g • O, desde el menú superior -> Performance [rendimiento] -> Advisor Home [página principal de Advisor] -> SQL Advisors Optimización de SQL sin esfuerzo 17
  18. 18. Optimización automática de SQL Optimización de SQL sin esfuerzo 18
  19. 19. Optimización de SQL sin esfuerzo 19
  20. 20. Optimización de SQL sin esfuerzo 20 Muestra la comparación de planes antes y después del Perfil de SQL
  21. 21. Comparación de mejoras Optimización de SQL sin esfuerzo 21
  22. 22. Comparación de planes Optimización de SQL sin esfuerzo 22 Muestra que los pasos del plan son diferentes como resultado del Perfil de SQL
  23. 23. Planes alternativos Optimización de SQL sin esfuerzo 23 Crea una LÍNEA DE BASE
  24. 24. ¿Por qué solo se emplean ///perfiles automáticos? • Se configuran rápidamente – crear un índice lleva tiempo • No es necesario modificar el código SQL • Pruebas localizadas ///para SQL solamente -> brindan eficacia • ¿No le gusta el resultado? Es fácil volver atrás. • Pueden ser privados, usando la categoría de optimización de SQL Optimización de SQL sin esfuerzo 24
  25. 25. Más sobre los perfiles automáticos • Comportamiento predeterminado: – Se usa MAINTENANCE_WIND OW_GROUP – Los perfiles de SQL se generan pero no se implementan Optimización de SQL sin esfuerzo 25 Es posible configurar: – Si, cuándo, por cuánto tiempo – Los recursos permitidos – Si los perfiles se aceptan automáticamente – Cuántos perfiles se implementan
  26. 26. Perfiles de SQL o Líneas de base Perfil de SQL Línea de base Enfoque reactivo Enfoque proactivo Mal plan. Se aplica una solución Buen plan. Se ///fija el plan. Funcionamiento: almacena información adicional sobre cardinalidad Funcionamiento: almacena el plan; la cardinalidad no es el factor principal Brinda datos adicionales a Optimizer Ayuda a Optimizer a elegir entre distintas opciones No se contemplan planes específicos Solo set de planes Cuando las modificaciones de datos son considerables, es el mejor enfoque Cuando las modificaciones de datos son considerables, es difícil de utilizar Una ejecución basta para generar un perfil Se necesita más de una ejecución para capturar la línea de base Puede seguir siendo válido si se modifican las estructuras de acceso Es posible que deje de ser válida si se modifican las estructuras de acceso Optimización de SQL sin esfuerzo 26
  27. 27. Real-time SQL Monitoring • Desde el menú de SQL, ///Plan – Monitorea automáticamente procesos SQL de ejecución prolongada – Muestra las estadísticas y los recursos que se utilizan en cada paso del plan – Muestra la cardinalidad real en cada paso, ayuda a resolver problemas relativos a estimaciones de cardinalidad poco satisfactorias Optimización de SQL sin esfuerzo 27
  28. 28. Real-time SQL Monitoring • Expone estadísticas de monitoreo – Nivel de funcionamiento del plan – Nivel de ejecución en paralelo – E/S, CPU, memoria, red – Exadata Smart Scan Optimización de SQL sin esfuerzo 28 Herramienta muy útil: Listados activos
  29. 29. Listados activos sin EM • Funciones incorporadas que devuelven listados como objetos CLOB – SQL Details dbms_perf.report_session – SQL Monitor dbms_sqltune.report_sql_monitor_list – SQL Performance Analyzer dbms_sqlpa.report_analysis_task – Performance Hub dbms_perf.report_perfhub Optimización de SQL sin esfuerzo 29
  30. 30. Listados activos en un ejemplo de SQL set pages 0 linesize 32767 trimspool on set long 1000000 longchunksize 10000000 spool rep.html select dbms_perf.report_perfhub (is_realtime=>1, type=>'active') from dual; Optimización de SQL sin esfuerzo 30
  31. 31. ¿No le gusta la interfaz GUI? • Paquetes de funciones DBMS_SQLTUNE Optimización de SQL sin esfuerzo 31 Función Descripción CREATE_TUNING_TASK Crea una tarea de optimización • Para una única rutina de SQL, un grupo de rutinas de SQL • Para texto de SQL, o SQL_ID • Desde un set de optimización de SQL EXECUTE_TUNING_TASK Ejecuta la tarea • Los parámetros se definen aquí REPORT_TUNING_TASK Informa los resultados SCRIPT_TUNING_TASK Implementa los resultados. Crea una rutina que se implementará en SQL*Plus
  32. 32. Optimización automática sin interfaz GUI • Paquete DBMS_AUTO_SQLTUNE Optimización de SQL sin esfuerzo 32 Función Descripción SET_AUTO_TUNING_TASK_PARAMETER Modifica los parámetros predeterminados EXECUTE_AUTO_TUNING_TASK Ejecuta la tarea • Los parámetros se definen aquí REPORT_AUTO_TUNING_TASK Informa los resultados
  33. 33. Origen del set de optimización Optimización de SQL sin esfuerzo 33 Origen Cómo obtenerlo Espacio compartido SELECT_CURSOR_CACHE () De un repositorio AWR SELECT_WORKLOAD_REPOSITORY () Archivos de seguimiento de Oracle SELECT_SQL_TRACE () Resultados de comparación de tareas de SQL Performance Analyzer SELECT_SQLPA_TASK () Otro set de optimización de SQL SELECT_SQLSET () Todas las funciones están en el paquete DBMS_SQLTUNE
  34. 34. Para llevar • Active SQL Tuning Advisor para que se ejecute automáticamente • Desactive la aplicación automática de los perfiles de SQL • Consulte las recomendaciones y aplíquelas desde una pantalla – En bases de datos pequeñas, quizá desee activar la aplicación automática de perfiles • Emplee Real-time Monitoring para identificar problemas en pasos específicos • Genere listados activos para explicar problemas de las bases de datos Optimización de SQL sin esfuerzo 34
  35. 35. Preguntas y respuestas Blog: arup.blogspot.com Tweeter: @ArupNanda Facebook.com/ArupKNanda 35Optimización de SQL sin esfuerzo
  36. 36. Copyright © 2014, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 36

×