8
E16: Diseño de Sistemas de Bases de Datos UNIVERSITAT JAUME I 1 Optimización de Optimización de Consultas en Consultas en Oracle Oracle E16: Diseño de Sistemas de Bases de Datos UNIVERSITAT JAUME I 2 Almacena el plan de ejecución de una consulta en una tabla previamente creada con dicha función. El siguiente comando visualiza el plan de ejecución de cada consulta que ejecutemos: SET AUTOTRACE ON EXPLAIN; El comando SET TIMING ON; nos da el tiempo de ejecución de cada consulta. El comando EXPLAIN PLAN El comando EXPLAIN PLAN

Optimizacion de Consultas Oracle

Embed Size (px)

Citation preview

Page 1: Optimizacion de Consultas Oracle

1

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 1

Optimización de Optimización de Consultas en Consultas en

OracleOracle

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 2

• Almacena el plan de ejecución de una consulta en una tabla previamente creada con dicha función.

• El siguiente comando visualiza el plan de ejecución de cada consulta que ejecutemos:SET AUTOTRACE ON EXPLAIN;

• El comando SET TIMING ON; nos da el tiempo de ejecución de cada consulta.

El comando EXPLAIN PLANEl comando EXPLAIN PLAN

Page 2: Optimizacion de Consultas Oracle

2

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 3

EXPLAIN PLAN FOR SELECT ename, job, sal, dname FROM emp, dept WHERE emp.deptno = ept.deptnoAND NOT EXISTS

(SELECT * FROM salgrade WHERE emp.sal BETWEEN losal AND hisal);

ID OPERATION OPTIONS OBJECT_NAME0 SELECT STATEMENT1 FILTER2 NESTED LOOPS3 TABLE ACCESS FULL EMP4 TABLE ACCESS BY ROWID DEPT5 INDEX UNIQUE SCAN PK_DEPTNO6 TABLE ACCESS FULL SALGRADE

EjemploEjemplo

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 4

Page 3: Optimizacion de Consultas Oracle

3

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 5

Optimización enOptimización enOracleOracle

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 6

Optimización Basada en CostesOptimización Basada en Costes

Page 4: Optimizacion de Consultas Oracle

4

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 7

• Sustituye el operador IN por OR:iva in (16,7) iva = 16 OR iva = 7

• Sustituye el operador OR por UNION ALL• Sustituye BETWEEN por >= y <=

x between 1 and 100 x >= 1 and x<= 100• Evalúa las fórmulas de constantes:

precio > 100 * 1.1 precio > 110• Combina la consulta con las vistas y subconsultas que utiliza.• Desplaza los predicados de la consulta para que se combinen con las vistas y subconsultas.

Transformación de ConsultasTransformación de Consultas

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 8

Optimización Basada en ReglasOptimización Basada en Reglas

•En este caso no se realiza la fase de estimación de costes.

• Se calcula un plan de ejecución en base a los posibles caminos de acceso, o sea se escoge el plan más rápido de ejecutar según un ranking de caminos de acceso.

•No tiene en cuenta el tamaño y distribución de los datos.

•Es sensible al orden de escritura de las condiciones en la sentencia.

•Oracle lo considera obsoleto y anuncia su desaparición en próximas versiones.

Page 5: Optimizacion de Consultas Oracle

5

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 9

Ranking de Caminos de AccesoRanking de Caminos de AccesoPath 1: Single Row by Rowid Path 2: Single Row by Cluster Join Path 3: Single Row by Hash Cluster Key with Unique or Primary Key Path 4: Single Row by Unique or Primary Key Path 5: Clustered Join Path 6: Hash Cluster Key Path 7: Indexed Cluster Key Path 8: Composite IndexPath 9: Single-Column IndexesPath 10: Bounded Range Search on Indexed Columns Path 11: Unbounded Range Search on Indexed Columns Path 12: Sort Merge Join Path 13: MAX or MIN of Indexed Column Path 14: ORDER BY on Indexed ColumnPath 15: Full Table Scan

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 10

Optimización Basada en CostesOptimización Basada en Costes• El optimizador calcula todos los planes de ejecución posibles y se queda con el de menor coste, o uno lo suficiente bueno.

• Para estimar el coste se tiene en cuenta datos estadísticos delsistema, y de las tablas e índices que intervienen.

•Previamente hay que cargar los datos estadísticos en el diccionario de datos mediante el comando ANALIZE o con la siguiente sentencia:execute dbms_stats.gather_schema_stats(‘mi_esquema', method_pt=>'FOR ALL COLUMNS SIZE AUTO');

• El coste estimado de un plan de ejecución tiene en cuenta, paracada camino y operación a ejecutar, las operaciones de E/S, el tiempo de CPU, y la memoria principal disponible.

Page 6: Optimizacion de Consultas Oracle

6

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 11

Estadísticas del DiccionarioEstadísticas del DiccionarioEstadísticas de Tabla

• Número de filas• Número de bloques• Longitud media de las filas

Estadísticas de Columna• Número de valores distintos• Número de valores nulos• Distribución de los datos (histogramas)

Estadísticas de Indices• Número de bloques de hojas• Número de niveles• Factor de clustering

Estadísticas de Sistema• Rendimiento y utilización de la CPU• Rendimiento y utilización de E/S

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 12

Caminos de Acceso a las FilasCaminos de Acceso a las FilasFull Table Scans Sample Table Scans ROWID Scans Index ScansCluster Scans Hash Scans

Index Unique Scans Index Range Scans Index Range Scans Descending Index Skip ScansFull Scans Fast Full Index Scans Index Joins Bitmap Joins

Page 7: Optimizacion de Consultas Oracle

7

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 13

Cálculo de Cálculo de JoinsJoins

Nested Loop Joins Nested Loop Outer Joins Hash Joins Hash Join Outer Joins Sort Merge Joins Sort Merge Outer Joins Cartesian JoinsFull Outer Joins

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 14

Cálculo de HistogramasCálculo de Histogramas• Sirven para determinar la selectividad de una condición sobre una columna.

•Ayudan a decidir la utilización de un índice, o el orden de las tablas en un join.

•Para generarlos hay que ejecutar el comando ANALIZE:ANALYZE TABLE emp COMPUTE SATATISTICS FOR COLUMNS sal SIZE 10;

• Histograma de una distribución lineal:

• Histograma de una distribución no lineal:

Page 8: Optimizacion de Consultas Oracle

8

E16: Diseño de Sistemas de Bases de Datos

UNIVERSITAT JAUME I 15

Utilización de Utilización de HintsHints

SELECT /*+ full(p) index(c pk_clientes) */ c.nombre, p.nombreFROM pueblos p, clientes cWHERE c.codpue = p.codpue;

SELECT /*+ use_nl(c, p) */ c.nombre, p.nombreFROM pueblos p, clientes cWHERE c.codpue = p.codpue;

•Son instrucciones que se insertan en la consulta y que fuerzan al optimizador a elegir un plan de ejecución que cumpla el hint.