Optimizacin de consultas en Oracle Ampliacin de Bases de Datos 2 Conceptos Optimizacin Proceso de eleccin de la forma ms eficiente de ejecutar una sentencia SQL 2 enfoques en Oracle 9i CBO Cost-Based Optimization RBO Rule-Based Optimization Planes de ejecucin (QEP) Combinacin de pasos para ejecutar una consulta unos recuperan datos de las tablas otros usan los datos recuperados 2 Ampliacin de Bases de Datos 3 Conceptos Descomposicin jerrquica de operaciones Primero operaciones en nodos hojas los pasos de un plan de ejecucin no se ejecutan en el orden de numeracin Las tuplas devueltas por cada operacin son la entrada para su operacin padre Caminos de acceso Distintas formas de acceder a los datos No siempre puede utilizarse todos los disponibles Ampliacin de Bases de Datos 4 Arquitectura de procesamiento Analizador realiza anlisis sintctico realiza anlisis semntico Optimizador genera plan ptimo de ejecucin Generador de fuentes de tuplas genera plan de ejecucin de consultas (estos 3 componentes forman el compilador SQL) Motor de ejecucin realiza el plan de ejecucin asociado a una consulta genera los resultados de la consulta 3 Ampliacin de Bases de Datos 5 Arquitectura de procesamiento Ampliacin de Bases de Datos 6 Pasos en operaciones optimizador Evaluacin de expresiones y condiciones Evaluar cuanto antes expresiones con constantes Transformacin de sentencias En otras equivalentes ms simples Eleccin del enfoque de optimizacin RBO o CBO Eleccin de los caminos de acceso Para cada tabla, entre los disponibles Eleccin del orden de los joins Cuando hay ms de 2 tablas Eleccin de los tipos de join Entre los disponibles 4 Ampliacin de Bases de Datos 7 Ejemplo de plan de ejecucin EXPLAIN PLAN FOR SELECT ename, job, sal, dname FROM emp, dept WHERE emp.deptno = dept.deptno AND NOT EXISTS (SELECT * FROM salgrade WHERE emp.sal BETWEEN losal AND hisal); ID OPERATION OPTIONS OBJECT_NAME --------------------------------------------------- 0 SELECT STATEMENT 1 FILTER 2 NESTED LOOPS 3 TABLE ACCESS FULL EMP 4 TABLE ACCESS BY ROWID DEPT 5 INDEX UNIQUE SCAN PK_DEPTNO 6 TABLE ACCESS FULL SALGRADE Ampliacin de Bases de Datos 8 Ejemplo de plan de ejecucin 5 Ampliacin de Bases de Datos 9 Optimizador basado en coste Plan de ejecucin ms eficiente considerando: Caminos de acceso disponibles Informacin estadstica de objetos del esquema Sugerencias del usuario (hints) Estadsticas Caractersticas de distribucin y almacenamiento de: tablas, columnas, ndices y particiones Uso de histogramas para distribucin Es el mejor optimizador para nuevas aplicaciones Y en la versin 10g, el nico! Imprescindible en datawarehouses Ampliacin de Bases de Datos 10 Funcionamiento del CBO 3 etapas en el optimizador Generar QEP potenciales basado en caminos de acceso y hints Estimar coste de cada plan basado en estadsticas del diccionario de datos coste proporcional al uso de recursos necesarios incluye CPU, memoria y operaciones e/s a disco diferente en planes paralelos Elegir QEP con menor coste comparando costes de planes potenciales 6 Ampliacin de Bases de Datos 11 Arquitectura del CBO 3 componentes Transformador de consultas determina si es ms ventajoso cambiar la consulta para conseguir un mejor QEP Estimador 3 tipos de medidas selectividad: ratio de tuplas que se seleccionarn del conjunto cardinalidad: nmero de tuplas en el conjunto coste: unidades de trabajo o recursos empleados Generador de planes considera: caminos de acceso, tipos de join, orden de los joins genera subplanes para consultas anidadas Ampliacin de Bases de Datos 12 Arquitectura del CBO 7 Ampliacin de Bases de Datos 13 CBO. Enfoque optimizacin 2 enfoques optimizacin Mejor rendimiento, por defecto recuperacin de todas las tuplas informes, procesos batch Menor tiempo de respuesta recuperacin de la primera fila aplicaciones interactivas Ampliacin de Bases de Datos 14 Optimizador basado en reglas Funcionamiento Elige el plan de ejecucin utilizando los caminos de acceso disponibles y el orden de prioridad fijado Orden de prioridad heurstico Siempre elige el camino de acceso con el rango ms bajo Normalmente, a menor rango, operaciones ms rpidas 8 Ampliacin de Bases de Datos 15 Caminos de acceso Full table scan ORDER BY on indexed columns MAX or MIN of indexed column Sort-merge join Unbounded range search on indexed columns Bounded range search on indexed columns Single-column indexes Composite key Indexed cluster key Hash cluster key Cluster join Single row by unique or primary key Single row by hash cluster key with unique or prim. key Single row by cluster join Single row by rowid Camino de acceso 11 Bitmap index scan 10 Index join 9 Fast full index scan 8 Sample table scan 7 Caminos de acceso sin rango (no utilizables por RBO) 6 5 15 4 14 3 13 2 12 1 Rango Ampliacin de Bases de Datos 16 Posibilidades de optimizacin Parmetro OPTIMIZER_MODE CHOOSE elige CBO si existen estadsticas. Si no, RBO ALL_ROWS CBO con objetivo mejor rendimiento FIRST_ROWS_n CBO con objetivo menor tiempo de respuesta n = 1, 10, 100 o 1000 FIRST_ROWS mezcla CBO y RBO. Obsoleto RULE elige RBO Ej: ALTER SESSION SET OPTIMIZER_MODE = FIRST_ROWS_10