+ All Categories
Home > Documents > 05_BBDD.GVD.Plan

05_BBDD.GVD.Plan

Date post: 18-Feb-2018
Category:
Upload: leandro-arge
View: 215 times
Download: 0 times
Share this document with a friend
22
7/23/2019 05_BBDD.GVD.Plan http://slidepdf.com/reader/full/05bbddgvdplan 1/22 Grandes volúmenes de datos Plan de ejecución bases de datos
Transcript
Page 1: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 1/22

Grandes volúmenes de

datosPlan de ejecución

bases de datos

Page 2: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 2/22

Page 3: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 3/22

Plan de ejecución en Oracle

EXPLAIN PLAN◦  Permite consultar el plan de ejecución de una

sentencia

 Muestra plan de ejecución La sentencia no se ejecuta

3

Page 4: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 4/22

Plan de ejecución en Oracle

EXPLAIN PLAN◦ Inserta una fila por cada paso del plan de

ejecución en una consulta

◦ La tabla en la que se inserte la descripción debecontener columnas con nombres y tipos de datosidénticos a la tabla PLAN_TABLE

proporcionada en el script

$ORACLE_HOME/RDBMS/ADMIN/UTLXPLAN.SQL

4

Page 5: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 5/22

Plan de ejecución en Oracle PLAN_TABLE

◦ http://download.oracle.com/docs/cd/B19306_01/server.102/b14211

 /ex_plan.htm#i18300 ◦   Statement_id varchar2(30)

 Valor opcional para identificar planes de ejecución

◦   Operation varchar2(30)

  Nombre de la operación interna realizada http://download.oracle.com/docs/cd/B19306_01/server.102/b14211

 /ex_plan.htm#i23461 

◦   Options varchar2(225)   Detalles sobre la operación 

◦   Object_name varchar2(30)

Nombre de la tabla o índice◦   Position numeric

Para la primera fila indica el coste estimado por el optimizadorpara realizar la sentencia.

Para el resto, indica la posición relativa respecto al padre

5

Page 6: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 6/22

Plan de ejecución en Oracle

Sintaxis (reducida)

6

EXPLAIN PLAN

SET STATEMENT_ID = 'texto'

INTO esquema.tabla (es la PLAN_TABLE)

FOR sentencia ;

Page 7: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 7/22

Plan de ejecución en Oracle

Cláusula set statement_id

◦  Valor para la columna plan_table.statement_id para las filas del plan de ejecución

 Valor por defecto null Cláusula into table

◦ Nombre de la tabla de salida

◦  Valor por defecto plan_table

Cláusula for◦   Sentencia para la cual se desea conocer el plan de

ejecución

Select, insert, update, delete, create table, ……….. 

7

Page 8: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 8/22

Plan de ejecución en Oracle

Ejemplo. No existe índice

8

explain plan set statement_id = 'e1'into plan_tablefor select nomb_empr from empresas where cpos_empr = '03560';

select operation, options, object_name, positionfrom plan_tablewhere statement_id='e1';

Page 9: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 9/22

Plan de ejecución en Oracle

Ejemplo. Existe índice

9

explain plan set statement_id = 'e2'into plan_tablefor select nomb_empr from empresas where cif_empr = 'A1234567';

select operation, options, object_name, positionfrom plan_tablewhere statement_id='e2';

Page 10: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 10/22

Ejemplo sin indice

10

explain plan set statement_id='bm1'for select nume_pedi, fech_pedifrom pedidos

where esta_pedi ='R';

Plan de ejecución en Oracle

Page 11: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 11/22

Ejemplo con indice b-tree

11

explain plan set statement_id='bm2'for select nume_pedi, fech_pedifrom pedidoswhere esta_pedi ='R';

create index idx_pedidos_esta_pedi on pedidos(esta_pedi);

Plan de ejecución en Oracle

Page 12: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 12/22

Ejemplo con índice bitmap

12

explain plan set statement_id='bm3'for select nume_pedi, fech_pedifrom pedidoswhere esta_pedi ='R';

drop index idx_pedidos_esta_pedi;

create bitmap index bidx_pedidos_esta_pedi onpedidos (esta_pedi);

Plan de ejecución en Oracle

Page 13: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 13/22

Ejemplo. Función aritmética

13

select nume_pedi, esta_pedifrom pedidoswhere fech_pedi +5 = '25/05/07';

explain plan set statement_id='bf1'for select nume_pedi, esta_pedifrom pedidoswhere fech_pedi +5 = '25/05/07'; 

Plan de ejecución en Oracle

Page 14: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 14/22

Ejemplo. Función aritmética

14

create index idx_pedidos_fech_pedi on pedidos(fech_pedi);

explain plan set statement_id='bf2'for select nume_pedi, esta_pedifrom pedidoswhere fech_pedi +5 = '25/05/07'; 

Plan de ejecución en Oracle

Page 15: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 15/22

Ejemplo. Función aritmética

15

create index fidx_pedidos_fech_pedi on pedidos(fech_pedi+5);

analyze table pedidos compute statistics;

analyze index fidx_pedidos_fech_pedi validate

structure;

explain plan set statement_id='bf3'for select nume_pedi, esta_pedifrom pedidos

where fech_pedi +5 = '25/05/07'; 

No hace falta borrar idx_pedidos_fech_pedi

Plan de ejecución en Oracle

Page 16: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 16/22

Ejemplo. Función aritmética

16

explain plan set statement_id='bf4'for select nume_pedi, esta_pedi

from pedidoswhere fech_pedi +5 > '25/05/07'; 

Plan de ejecución en Oracle

Page 17: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 17/22

Ejemplo. Función aritmética

17

explain plan set statement_id='bf5'for select nume_pedi, esta_pedi

from pedidoswhere fech_pedi +15 > '25/05/07'; 

YA NO LO USA PUES EL INDICE SE CONSTRUYO CON +5

Plan de ejecución en Oracle

Page 18: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 18/22

Ejemplo. Función predefinida SQL

18

explain plan set statement_id='bf6'for select nomb_emprfrom empresaswhere cif_empr = 'A1234567';

select nomb_emprefrom empresaswhere cif_empre = 'A1234567';

Plan de ejecución en Oracle

Page 19: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 19/22

Ejemplo. Función SQL

19

explain plan set statement_id='bf6'for select nomb_emprfrom empresaswhere substr(cif_empr,1,1) = 'A';

select nomb_emprfrom empresaswhere substr(cif_empr,1,1) = 'A';

Plan de ejecución en Oracle

Page 20: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 20/22

Ejemplo. Función SQL

20

explain plan set statement_id='bf7'for select nomb_emprfrom empresas

where substr(cif_empr,1,1) = 'A';

create index fidx_empresas_cif_empr onempresas (substr(cif_empr,1,1) );

analyze table empresas compute statistics;

analyze index fidx_empresa_cif_empr validate

structure;

Plan de ejecución en Oracle

Page 21: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 21/22

Existen utilidades que nos facilitan esta tarea

21

Plan de ejecución en Oracle

Page 22: 05_BBDD.GVD.Plan

7/23/2019 05_BBDD.GVD.Plan

http://slidepdf.com/reader/full/05bbddgvdplan 22/22

En muchos casos el plan de ejecución es muy complejo

22

Plan de ejecución en Oracle