SlideShare una empresa de Scribd logo
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.
Optimización de SQL sin esfuerzo
2
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
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
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
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
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
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
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
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
<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
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
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.
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
• 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
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
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
Optimización automática de SQL
Optimización de SQL sin esfuerzo
18
Optimización de SQL sin esfuerzo
19
Optimización de SQL sin esfuerzo
20
Muestra la comparación de planes
antes y después del Perfil de SQL
Comparación de mejoras
Optimización de SQL sin esfuerzo
21
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
Planes alternativos
Optimización de SQL sin esfuerzo
23
Crea una LÍNEA DE BASE
¿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
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
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
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
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
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
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
¿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
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
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
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
Preguntas y
respuestas
Blog: arup.blogspot.com
Tweeter: @ArupNanda
Facebook.com/ArupKNanda
35Optimización de SQL sin esfuerzo
Copyright © 2014, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 36

Más contenido relacionado

PDF
TSQL menos frecuente desde SQL Server 2005
PDF
PDF
Copias de seguridad y recuperación de desastres
PDF
In memory
PDF
Planes de ejecucion 2
PPTX
期中考 Study guide
PPT
Seo modules
PPTX
Final exam Lesson 7and 8 1st part
TSQL menos frecuente desde SQL Server 2005
Copias de seguridad y recuperación de desastres
In memory
Planes de ejecucion 2
期中考 Study guide
Seo modules
Final exam Lesson 7and 8 1st part

Similar a Sql tuning without trying arup nanda ls (20)

PPTX
Performance Tuning en Azure SQL Database
PPTX
SQL Server 2017 Tunning Automatico
PPT
Pres17BDII.ppt
PDF
SQLSaturday 322 Guatemala 2014 Cubes Performance
PPTX
Libro de recetas.pptx
DOCX
Bd T1 Eq7 Caracteristicas Sql Server 2008 Todos
PDF
Novedades sql server 2008 para developers
PPTX
Data Amp 2017 - Whats New in SQL Server 2017
PPTX
Administrando SQL Server, mejores practicas para un DBA
PDF
Optimiza tus queries desde abajo
PDF
Migración a sql server 2016
PPTX
Diagnostico y resolución de problemas en sql server
PPTX
Escalabilidad Analysis Services 2012
PPTX
SQL Server Fundamentals 3ra Sesion
PDF
Novedades de SQL Server 2014 en motor relacional
PPTX
Vistazo a SQL Server 2016
PPTX
Novedades deSQL Server 2014 en Motor Relacional | SolidQ Summit 2014
PPTX
Introducción Procesador Consultas SQL Server - Query Processor
PPTX
MS SQL Server 2012 SP1 para desarrolladores
PPTX
SQL Server 2014 Mejoras del DB Engine
Performance Tuning en Azure SQL Database
SQL Server 2017 Tunning Automatico
Pres17BDII.ppt
SQLSaturday 322 Guatemala 2014 Cubes Performance
Libro de recetas.pptx
Bd T1 Eq7 Caracteristicas Sql Server 2008 Todos
Novedades sql server 2008 para developers
Data Amp 2017 - Whats New in SQL Server 2017
Administrando SQL Server, mejores practicas para un DBA
Optimiza tus queries desde abajo
Migración a sql server 2016
Diagnostico y resolución de problemas en sql server
Escalabilidad Analysis Services 2012
SQL Server Fundamentals 3ra Sesion
Novedades de SQL Server 2014 en motor relacional
Vistazo a SQL Server 2016
Novedades deSQL Server 2014 en Motor Relacional | SolidQ Summit 2014
Introducción Procesador Consultas SQL Server - Query Processor
MS SQL Server 2012 SP1 para desarrolladores
SQL Server 2014 Mejoras del DB Engine
Publicidad

Más de CJava Peru (12)

PDF
Desarrollo de Software usando Patrones y JDBC 4.0
PDF
"Desarrollo de Microservicios con Spring Boot y Spring MVC"
PPTX
Oracle DataBase Hacking Etico
PDF
Java on mobile
PDF
From zero to oracle zfs storage appliance backup and recovery in 60 minutes
PDF
Practical security hands on with oracle solaris
PDF
Down to-earth microservices with java ee
PDF
Web logic multi tenancy fundamentals
PDF
Módulo I fundamentals I
DOCX
Syllabus fundamentals I
PDF
Relational to json with node dan mc ghan-ls
PDF
Internet of things architecture and impact
Desarrollo de Software usando Patrones y JDBC 4.0
"Desarrollo de Microservicios con Spring Boot y Spring MVC"
Oracle DataBase Hacking Etico
Java on mobile
From zero to oracle zfs storage appliance backup and recovery in 60 minutes
Practical security hands on with oracle solaris
Down to-earth microservices with java ee
Web logic multi tenancy fundamentals
Módulo I fundamentals I
Syllabus fundamentals I
Relational to json with node dan mc ghan-ls
Internet of things architecture and impact
Publicidad

Último (20)

DOCX
Cumplimiento normativo y realidad laboral
PPTX
Contexto Normativo NSR10, presentacion 2025
PDF
TESTAMENTO DE DESCRIPTIVA ..............
PDF
prg2_t01_p01_Fundamentos POO - parte1.pdf
PDF
Estrategias de apoyo de tecnología 2do periodo pdf
PDF
5 Presentación de PowerPointGENERACIÓN DESECHOS UIS 18-02-2023 (1).pdf
PDF
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
PPTX
MODULO 2. METODOLOGIAS PARA ANALISIS DE RIESGOS 2da Parte.pptx
PPTX
GEOLOGIA, principios , fundamentos y conceptos
PPTX
Gestion de seguridad y salud ocupacional.pptx
PPTX
clase MICROCONTROLADORES ago-dic 2019.pptx
PDF
Módulo-de Alcance-proyectos - Definición.pdf
PDF
1132-2018 espectrofotometro uv visible.pdf
PDF
Electricidad-Estatica-Peligros-Prevencion.pdf
PDF
NORMATIVA Y DESCRIPCION ALCANTARILLADO PLUVIAL.pdf
PPTX
Seminario de telecomunicaciones para ingeniería
PDF
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
PDF
Primera formulación de cargos de la SEC en contra del CEN
PPTX
1 CONTAMINACION AMBIENTAL EN EL PLANETA.pptx
PPT
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL
Cumplimiento normativo y realidad laboral
Contexto Normativo NSR10, presentacion 2025
TESTAMENTO DE DESCRIPTIVA ..............
prg2_t01_p01_Fundamentos POO - parte1.pdf
Estrategias de apoyo de tecnología 2do periodo pdf
5 Presentación de PowerPointGENERACIÓN DESECHOS UIS 18-02-2023 (1).pdf
CALIDAD SSOMA AMBIENTE PRL UNIVERSIDADDD
MODULO 2. METODOLOGIAS PARA ANALISIS DE RIESGOS 2da Parte.pptx
GEOLOGIA, principios , fundamentos y conceptos
Gestion de seguridad y salud ocupacional.pptx
clase MICROCONTROLADORES ago-dic 2019.pptx
Módulo-de Alcance-proyectos - Definición.pdf
1132-2018 espectrofotometro uv visible.pdf
Electricidad-Estatica-Peligros-Prevencion.pdf
NORMATIVA Y DESCRIPCION ALCANTARILLADO PLUVIAL.pdf
Seminario de telecomunicaciones para ingeniería
SEC formula cargos al Consejo Directivo del Coordinador y a ocho eléctricas p...
Primera formulación de cargos de la SEC en contra del CEN
1 CONTAMINACION AMBIENTAL EN EL PLANETA.pptx
PRIMEROS AUXILIOS EN EL SECTOR EMPRESARIAL

Sql tuning without trying arup nanda ls

  • 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. Optimización de SQL sin esfuerzo 2
  • 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. 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. 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. 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. 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. 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. 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. 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. <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. 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. 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. 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. • 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. 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. 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. Optimización automática de SQL Optimización de SQL sin esfuerzo 18
  • 19. Optimización de SQL sin esfuerzo 19
  • 20. Optimización de SQL sin esfuerzo 20 Muestra la comparación de planes antes y después del Perfil de SQL
  • 21. Comparación de mejoras Optimización de SQL sin esfuerzo 21
  • 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. Planes alternativos Optimización de SQL sin esfuerzo 23 Crea una LÍNEA DE BASE
  • 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. 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. 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. 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. 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. 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. 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. ¿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. 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. 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. 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. Preguntas y respuestas Blog: arup.blogspot.com Tweeter: @ArupNanda Facebook.com/ArupKNanda 35Optimización de SQL sin esfuerzo
  • 36. Copyright © 2014, Oracle y/o sus compañías afiliadas. Todos los derechos reservados. | 36