30543992 guia para la optimizacion de consultas
TRANSCRIPT
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
1/49
Gua para la Optimizacin de Consultasen una Base de Datos Relacional Utilizando
SQL
UNIVERSIDAD AUTONOMA GABRIEL RENEMORENO
FACULTAD DE CIENCIAS EXACTAS YTECNOLOGIA
Carrera de Ingeniera Informtica
Elaborado por: Ubaldo PrezFerreira
Proyecto de Grado
Proyecto de Grado para optar al Ttulo de:Licenciatura en Ingeniera Informtica
Santa Cruz de la Sierra Bolivia
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
2/49
Temario
Parte I. Perfil del Proyecto. Antecedentes.
Justificacin. Objetivos. Parte II: Fundamentos Tericos.
Modelo de Datos Relacional. Lenguajes Relacionales. Sistemas de Gestin de Base de Datos Relacionales. Conceptos del Procesamiento de Consultas. El Optimizador de Consultas.
Parte III: Propuesta y Aplicacin de la Gua para la Optimizacin deConsultas. Descripcin de la Gua Propuesta
Consideraciones Previa para el Uso de la Gua. Paso 1. Generar y analizar el Plan de Ejecucin. Paso 2. Reescribir la consulta SQL. Paso 3. Crear y Gestionar Indices. Paso 4. Ajuste al Esquema de la Base de Datos.
Aplicacin de la Gua Propuesta Consideraciones Previa para el Uso de la Gua.
Ejemplo 1. Ejemplo 2. Ejemplo 3.
Conclusiones y Recomendaciones.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
3/49
Parte I - Perfil del Proyecto
Antecedentes
Justificacin
Objetivos
Antecedentes
Justificacin
Objetivos
En las Aplicacin Productiva, existe la posibilidad de encontraralgunas Consultas SQL, que al momento de ejecutarse, generen
problemas en el SBD, tales como:
-Elevada carga del CPU-Bloquean procesos de trabajo durante largo tiempo.-Leen muchos bloques de datos a la memoria intermedia(Paginamiento)-Los discos estn fuertemente cargados.
Las Consultas SQL que generan este tipo de problema, se lasdenomina COSTOSAS o INEFICIENTES.
Y por supuesto estos problemas son la causa de:Malestar entre los usuarios y/o clientes.Mala imagen corporativa, etc.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
4/49
Parte I - Perfil del Proyecto
Que hacer cuando se presenta unaConsulta SQL costosa?
Antecedentes
Justificacin
Objetivos
Antecedentes
Justificacin
Objetivos
Por donde empezar?, si no secuenta con pasos biendefinidos, resolver el problema
de una Consulta SQL costosa,puede tomar horas de trabajo.
Es as, que se propone unaGua para resolver elproblema de las ConsultasSQL costosas.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
5/49
Parte I - Perfil del Proyecto
Objetivo principal.
Disear una Gua para la Optimizacin deConsultas en una Base de Datos Relacionalutilizando SQL .
Objetivos Especficos.
Describir las Fases del Proceso de Optimizacin de
Consultas. Detallar los componentes y funcionamiento de un
Optimizador de Consultas.
Exponer el contenido de un Plan de Ejecucin.
Detallar las reglas para evitar formular Consultas SQLcostosas.
Detallar las reglas para Crear y Gestionar ndices.
Explicar el contenido de las Estadsticas del Catalogode Base de Datos.
Antecedentes
Justificacion
Objetivos
Antecedentes
Justificacion
Objetivos
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
6/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
El Modelo de Datos Relacional (MDR) fue propuesto por Edgar
Frank, Codd en 1970.
Este Modelo, se fundamenta en la TEORIA MATEMATICA DECONJUNTOS, de ah, su potencial.
Los conjuntos en el MDR son denominados Dominios (D).
Un Dominio es un conjunto de valores escalares del mimo tipo.
La nica herramienta de Estructura de Datos usada por esteModelo es una Relacin (R).
04/26/10 07:13 PM
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
7/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Una Relacin R, es representada como una Tabla.
A1 An
V1 Vn
Tupla, conjunto de valores t1tm,
ti=(v1,,vn) / v1 A1 vn An
Atributo, papel que desempea D en R.Grado (n)
Car
din
alid
ad
(m).
ESQUEMA
INST
ANC
IA
Restricciones de Integridad sobre las Relaciones.
Una Llave Primaria (PK), es un atributo o un conjunto deatributos, que sirven para identificar una fila una relacin. No se
permiten valores NULOS en PK.
Una Llave Foranea (PF), es uno o mas atributos comunes entre
dos Relaciones.04/26/10 07:13 PM
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
8/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Operaciones adicionalesEstas operaciones puedenser expresadas sobre labase de las primeras cinco
Operaciones Bsicas
Seleccin ( )
Proyeccin (
)Producto Cartesiano ( )
Unin ()
Diferencia (-)
Interseccin ()
Reunin con predicado(|X|p)
Reunin natural (|X|)
Divisin ( )
Operaciones Unarias
Operaciones Binarias
El Algebra Relacional: Es un lenguaje PROCEDIMENTAL, y consisteen un conjunto de operaciones de alto nivel que operan sobre
Relaciones
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
9/49
Parte II - Fundamentos Tericos
A B C
aaa 111 234
R1bbb 222 213
ccc 123 234
X Y
R2aa uu
bb ss
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Expresin Algebraica. Las operaciones del Algebra Relacional,son formuladas dentro de una Expresin Algebraica; las mismas queespecifican la manera en que los datos deben ser recuperados de lasRelaciones.
A,B,X ( X=aa (R1XR2))
El resultado de una ExpresinAlgebraica es uma nueva Relacin
Aplicando laExpresin Algebraica
A B X
aaa 111aa
bbb 222aa
ccc 123aa
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
10/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
rbol Algebraico. Las Expresiones Algebraicas, pueden serrepresentada en su totalidad en un rbol Algebraico.
A,B,X ( X=aa (R1XR2))
R1 R2
X=aa
A,B,X
X 1ro. Producto Cartesiano
2do. Seleccionar las tuplas con X=aa
3ro. Proyectar A,B,X
Lectura de abajo
hacia arriba
Herramienta Bsica utilizada por los SGBD.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
11/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Lenguaje SQL (Structure Query Languaje). Implementado
en la mayora de los SGBD, es un lenguaje NOPROCEDIMENTAL, al igual que el Algebra Relacional opera sobreRelaciones
La mayora de las operaciones del Algebra relacional pueden serformuladas en el SQL.
La Estructura Bsica de una expresin en SQL esta compuesta detres clusulas:
SELECT A1, A2,...,An // Que atributos
FROM r1, r2,...,rm // De que relaciones
WHERE P // Que tuplas
[GROUP BY A1, A2,...,An]// Agrupador
[HAVING PG] // Predicado para el grupo
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
12/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Sistema de Gestin de Bases de Datos (SGBD). Es el
conjunto de Programas que permiten: Definir yManipularla informacin que contienen las Bases deDatos, entre otras tareas que realiza como ser:Autorizaciones, Seguridad, Recuperacin
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
13/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Programa deAplicacin
Esquema de
BD
Consulta de Usaurio
Tabla deAutorizacion
Adm. de Accesos
Concurrente
Compilador
LDD
Procesador
de
Consultas
Gestor
De
Base de Datos
Gestor
de
Archivos
Datos + Index
Diccionario
de Datos
CompiladorLMD
Lenguaje SQL
Control de
Acceso
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
14/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
El Proceso de Optimizacin de Consultas
Datos + Index
Diccionario
de Datos
Traductor(Parser)
rbolRelacional
Plan deEjecucin
Consulta
SQL
Resultado de laConsulta
Optimizadorde Consulta
Motor deEjecucion
Reglas de Transformacin de Expresiones
Estadsticas de las Relaciones.
Medidas de Costos.
Ordenes Join.
Seleccin del Plan Optimo
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
15/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
La Gua es una herramienta de propsito general, en algunos casospuede ser muy compleja o muy simple.
Consideraciones para el uso de Gua.
No esta orientada a un SGBD en particular
La Gua debe ser vista como una herramienta mas en el proceso deOptimizacin de Consultas.
La Gua puede ser utilizada este o no poblada la Base de Datos.
La gua esta orientado a cierto de tipo de usuarios como ser:Administradores de Base de Datos, Diseadores de Base deDatos y Programadores de Aplicaciones.
La gua esta fundamentada en la Optimizacin de Rendimientos deSistemas propuesta por SAP.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
16/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Paso 1
Generar el Plan de Ejecucin
Paso 2
Reescribir la Consulta
Reescribir la
Consulta?
Paso 1
Generar el Plan de Ejecucin
Paso 3
Crear y Gestionar ndices
Ajustar y/oCrear
ndices?
Paso 1
Generar el Plan de Ejecucin
Paso 4
Ajustar el Esquema de la BD
Ajustar elEsquema de
BD
Paso 1
Generar el Plan de Ejecucin
SINO
SI
SI
NO
NO
Estadsticas Obsoletas?
Anlisis del Plan de Ejecucin
Orientar al uso de INDICESExistentes?
Crear INDICES?
Ajustar los Existentes
Desnormalizar
Adicionar Atributos Derivados
Contin
ua
l l d j i l d l i l l
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
17/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Paso 1. Generar el Plan de Ejecucin
Entre otros, el Plan de Ejecucin muestra el orden lgico en la cual seacceden a las tablas y el mtodo de acceso que utiliza para leer cada tabla .
Verificar que las Estadsticas de las Tablas no sean Obsoletas.Actualizar las Estadsticas puede llevar horas de trabajo.
Los SGBD proporcionan una herramienta llamada SHOWPLAN,que muestra al usuario un detalle del Plan de Ejecucin:
Cual es el tiempo de ejecucin de la consulta (ms, seg, min)?Cuntas tuplas se estima recuperar?
Cul es el costo de la consulta (interno SGBD)?
Se consider los INDICES EXISTENTE en cada tabla o se estrealizando un FULL TABLE SCAN?
Se utilizan tablas temporales para procesar la consulta ?
Cuales son los rdenes de JOIN que utiliza el optimizador pararesolver la consulta ?
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
18/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Acceso Index Scan
0.00
0.20
0.40
0.60
0.80
1.00
1.20
n100
n500
0
n500
00
n100
000
n200
000
n500
000
n100
0000
n200
0000
Cantidad de Tuplas
Tie
mpo(min)
Acceso Full Table Scan
0.00
20.00
40.00
60.00
80.00
100.00
120.00
140.00
160.00
180.00
200.00
n100
n500
0
n500
00
n100
000
n200
000
n500
000
n100
0000
n200
0000
Cantidad de Tuplas
T
iempo(min)
Si existe un acceso FULL TABLE SCAN,en una consulta, esta tiene la probabilidad
de ser costosa a mayor cantidad de datos.
Full Table Scan Vs. Index Scan
Full Table Scan Index Scan
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
19/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Planes de Ejecucin para diferentes SGBD.
Motor de Base deDatos
Plan de Ejecucin Anlisis del Plan de Ejecucin
INFORMIX 1. SELECT statement2. INDEX PATH3. INDEX KEY: idx_customer
4. LOWER INDEX FILTER:( customer_num=101)
La lnea dos indica que INFORMIX accedemediante un ndice. La lnea tres indicaque el ndice utilizado en idx_customer, lalnea cuatro indica que se utiliz el campocustomer_num como filtro
ORACLE 1. SELECT statement2. TABLE ACCES BY INDEX ROWID
customer_num=1013. INDEX UNIQUE SCAN idx_customer
La lnea dos indica que se especifica queel acceso es va ndice y ademsutilizando el filtro customer_num=101, lalnea tres indica que el ndice utilizado esel idx_customer.
SQL SERVER 1. SELECT statement2. CLUSTER INDEX SEEK (idx_customer)3. SEEK:( customer_num=@101
La lnea dos se indica que se utiliza elndice idx_customer, la lnea tres indicaque la busque utilizo el filtrocustomer_num=@101.
DB/2 1. SELECT statement2. FETCH customer_num=1013. SORT4. IXSCAN INDEX idx_customer
La lnea dos indica que se utilizo el filtrocustomer_num=101, la lnea tres indicaque el ndice esta ordenado, y en la lneacuatro se ndica que se utiliza el ndiceidx_customer.
SELECT *
FROM Customer WHERE customer_num = 101
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
20/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Paso 2. Reescribir la Consulta.
SELECT DISTINCT fname
FROM customer
WHERE customer_num IN
(SELECT customer_num
FROM orders
WHERE order_date = 20/01/1989)
SELECT DISTINCT fname
FROM customer
WHERE customer_num = ANY
( SELECT customer_num
FROM orders
WHERE order_date = 20/01/1989)
SELECT DISTINCT fname
FROM customer
WHERE EXISTS
( SELECT FROM ORDERS
WHERE customer.customer_num =orders.customer_num
AND order_date = 20/01/1989)
SELECT DISTINCT fname
FROM customer, orders
WHERE customer.customer_num =orders.customer_num
AND order_date = 20/01/1989
SELECT DISTINCT fname
FROM customer
WHERE (SELECT COUNT() FROM orders
WHERE customer.customer_num =orders.customer_num
AND order_date = 20/01/1989)>0
SELECT DISTINCT fname
FROM customer
WHERE 20/01/1989 IN
(SELECT order_date
FROM orders
WHERE customer.customer_num =orders.customer_nu ).
SELECT DISTINCT fname
FROM customer
WHERE 20/01/1989 = ANY
(SELECT order_date
FROM orders
WHERE customer.customer_num =
orders.customer_num)
SELECT fname
FROM customer, orders
WHERE order_date=20/01/1989
AND P.customer_num = S.customer_num
GROUP BY fname
El SQL permite escribir una consulta de diferentes maneras, sinembargo, esto implica una estrategia de acceso diferente.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
21/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Reglas para evitar escribir Consultas SQL costosas.
R1. Transferir Pequea Cantidad de Datos.R2. Usar los Campos Indexados en la Clusula WHERE
campo indexado = expresin
R3. Si existen ndices Compuestos, Utilice los Primeros Campos.
Si se tiene un ndice compuesto con los campos A, B y CWHERE A=1
WHERE A>=12 AND A
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
22/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Reglas para evitar escribir Consultas SQL costosas.
R12. Usar Tablas Temporales para Agilizar la Consulta.
R6. Evitar no Iniciar una Serie de SubstringWHERE fname[4,2]=SC
R7. Evitar Joins de Cadenas Largas
WHERE TABLA1.nombre=TABLA2.nombre
R8. Evitar Subconsulta Correlativas.SELECT item FROM A
WHERE item IN (SELECT item FROM B WHERE B.num=50).
R9. Uso de la Clusula UNION para Eliminar el Full Table Scan.
R10. Aplicar Criterios Sobre uno de los Lados del Join.R11. Evitar el Uso de Funciones en la Clusula WHERE.
SELECT * FROM customer
WHERE UPERCASE(fname)=MARIO CLAROSVolver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
23/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Paso 3. Crear y Gestionar ndices.
Los INDICES se utilizan para agilizar las bsquedas de informacin.
Si los ndices proporcionan celeridad, por qu no indexar todas lascolumnas?.
Mediante el uso de ndices se evita el FULL TABLE SCAN.
Tipos de Indices.
ndices Primario, son creados sobre loscampos llaves primaria.ndices Secundarios, son creados sobre
los campos llaves forneas, o sobreatributos con alta selectividad.
Actualizar, borrar e insertar datos sobre una columna indexadaconsume ms tiempo.
Si hay muchos ndices, existe la probabilidad de que el Optimizadorseleccione ndice incorrecto.
Los ndices en una tabla como regla de oro no mas de 5.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
24/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Reglas para crear ndices.
R1. Campos Indexados en Criterios de Consultas. Los camposdefinidos como PK ya estn indexados, pero se deben investigar aquelloscampos que se incluyen en muchas consultas
R2. Joins con Campos Indexados. Si existe un JOIN entre dos o mas tablas,los campos comunes obligatoriamente deben ser creados como ndices.
R3. Usar ndices de Mltiples Campos Cuando sea Necesario.usar ndices sobre campos sustitutos, en lugar de tener ndices con campos
compuesto.
R4. Evitar Valores Nulos en un ndices. Si un atributo es definido comondice, evite los valores NULL.
R5. Atributos en la clusula ORDER BY. Si existen atributos queaparecen frecuentemente en la clusula ORDER BY, deben creados como indicescompuestos.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
25/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Reglas para crear ndices.
R6. Usar ndices Selectivos. Se deben indexar aquellos campos con altaSELECTIVIDAD.
La selectividad de un atributo es:
nmero de valores distintos/nmero de tuplas de la tabla.
1000 registros, y una columna indexada de la tabla tiene 950 valores
diferentes, la selectividad del ndice es 0.95 (950/1000).
La mejor selectividad es 1 (llaves primarias)
R7. ndices Compuestos Vs. Varios ndices con una SolaColumna. Cuando se va a crear un ndice compuesto, debe valorarse si laselectividad de ese ndice va a ser considerablemente mayor con varias columnas
que con una.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
26/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Paso 4. Ajustar el Esquema de la Base de Datos.
Sin embargo hay que tener en cuenta los siguientes factores:
La desnormalizacin hace que la implementacin sea ms compleja.
La desnormalizacin hace que se sacrifique la flexibilidad. La desnormalizacin puede hacer que los accesos a datos sean ms
rpidos, pero hace que las actualizaciones sean lentas.
Al realizar el diseo lgico se recomienda llegar, al menos, hasta la3FN, para obtener un esquema con una estructura consistente y sinredundancias.
Pero, a menudo, sucede que las BD Normalizadas no proporcionanla mxima eficiencia a las Consultas SQL. Por lo tanto, hay que
volver atrs y desnormalizar, sacrificando los beneficios de lanormalizacin para mejorar las Consultas.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
27/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Reglas para la Desnormalizacin de Relaciones. R1. Introducir atributos Derivados.
R2. Combinar Relaciones de 1:1
R3. Duplicar Atributos no Clave en Relaciones de 1:N paraReducir los Joins.
R4. Tablas de Referencias.
R5. Duplicar Llaves Forneas en Relaciones de 1:N paraReducir los Joins.
R6. Duplicar Atributos en Relaciones de N:M para Reducir losJoins.
R7. Introducir Grupos Repetitivos.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
28/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Introducir atributos Derivados.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
29/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Duplicar Atributos no Clave en Relaciones de 1:N para Reducir
los Joins.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
30/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Tabla de Referencia.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
31/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Duplicar Llaves Forneas en Relaciones de 1:N para Reducir los
Joins.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
32/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Paso 1.
Paso 2.
Paso 3.
Paso 4.
Aplicacin dela GuaPropuesta
Duplicar Atributos en Relaciones de N:M para Reducir los Joins.
Volver
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
33/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Esquema de la BD Valores.
NombreTabla
Tamao de la tabla(Bytes)
Numero de Filas Tamao de la Tabla(Mbyte)
inv_header 64 36,162 2.20
inv_detalle 26 3,840,140 95.21
inv_header
inv_detalle
tiene
1
N
create table inv_header
( nro_tran serial not nullprimary key,
nro_doc integer not null ,
fecha date not null , create table inv_detalle
( nro_tran integer not null ,
ing_egr char(1) not null ,
orden integer not null ,cod_tv smallint not null ,
nro_valor integer
foreign key (nro_tran) references inv_header,
primary key (nro_tran,ing_egr,orden,cod_tv,nro_valor),
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
34/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 1.
QUERY:
------select * from inv_header
where nro_tran=100 or nro_tran=300
Estimated Cost: 2
Estimated # of Rows Returned: 2
1) inv_header: SEQUENTIAL SCAN
Filters: (inv_header.nro_tran = 100 OR
inv_header.nro_tran = 300 )
select * from inv_header
where nro_tran=100 or nro_tran=300
Resultado
Tiempo: 4.1 min.
Mtodo de Acceso: FULL TABLE SCAN
Listar el detalle de valores de lastransacciones numero 100 y 300.
Anlisis
Existe un ndice sobre el campo nro_tran, sinembargo no fue utilizado, esto debido a quela clusula WHERE no es SARGABLE.
PASO 1.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
35/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 1.
QUERY:------
select * from inv_header where nro_tran=1
union
select * from inv_header where nro_tran=300
Estimated Cost: 2
Estimated # of Rows Returned: 21) inv_header: INDEX PATH
(1) Index Keys: nro_tran
Lower Index Filter: inv_header.nro_tran = 100
Union Query:
------------
1) inv_header: INDEX PATH
(1) Index Keys: nro_tran
Lower Index Filter: inv_header.nro_tran = 300
Solucin.
Reescribir la consulta, para que laclusula WHERE sea SARGABLE, seutilizo la Regla 9 del paso 2.
select * from inv_header where nro_tran=100union
select * from inv_header where nro_tran=300
Resultado.
Tiempo: 0.01 min.
Mtodo de Acceso: INDEX PATH
PASO 2.PASO 1.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
36/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 2.
QUERY:
------
select *from inv_detalle
where cod_tv=2 and nro_valor=700021
Estimated Cost: 2
Estimated # of Rows Returned: 1
1) inv_detalle: SEQUENTIAL SCAN
Filters: (inv_detalle.cod_tv = 2 AND
inv_detalle.nro_valor = 700021 )
select * from inv_detalle
where cod_tv=2 and nro_valor=700021
Listar el detalle de movimiento de la facturanumero 700021.
Resultado.
Tiempo: 8.3 min.
Mtodo de Acceso: FULL TABLE SCAN
Anlisis
No existe un ndice sobre los campos cod_tvy nro_valor, esta situacin hace que elSGBD se decida por un acceso FULL
TABLE SCAN.
PASO 1.
li i d l G
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
37/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 2.
QUERY:
------
select *
from inv_detalle
where cod_tv=2 and nro_valor=700021
Estimated Cost: 2
Estimated # of Rows Returned: 1
1) informix.inv_detalle: INDEX PATH
(1) Index Keys: cod_tv nro_valor
Lower Index Filter: (informix.inv_detalle.cod_tv = 2 AND
informix.inv_detalle.nro_valor = 700021 )
Anlisis.Se observa que la clusula WHERE esde tipo SARGABLE, sin embargo latabla inv_detalle no cuenta con losndices adecuado.
Solucin.
Se procedi a crear un ndice:
CREATE INDEX idx_inv_detalle1ON inv_detalle(cod_tv, nro_valor).
Resultado.
Tiempo: 0.01 min.
Mtodo de Acceso: INDEX PATH
PASO 3.
PASO 1.
P t III P t A li i d l G
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
38/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 3.
QUERY:
------
select inv_detalle.* from inv_header,inv_detallewhere inv_header.nro_tran=inv_detalle.nro_tran
and year(fecha)="2004" and month(fecha)="01"
Estimated Cost: 4
Estimated # of Rows Returned: 1
1) inv_header: SEQUENTIAL SCAN
Filters: (YEAR(inv_header.fecha )=2004 ANDMONTH(inv_header.fecha )=1 )
2) informix.inv_detalle: INDEX PATH
(1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor
Lower Index Filter: inv_detalle.nro_tran=inv_header.nro_tran
NESTED LOOP JOIN
select inv_detalle.* from inv_header,inv_detallewhere inv_header.nro_tran=inv_detalle.nro_tran
and year(fecha)="2004" and month(fecha)="01"
Listar el detalle de movimiento de valorescorrespondiente al mes de enero del 2004.
Resultado
Tiempo: 10.4 min.
Mtodo de Acceso: FULL TABLE SCAN
Anlisis
Se observa que la tabla inv_detalle notiene el indice adecuado, razn por la
cual el SGDB elige el FULL TABLESCAN.
PASO 1.
P t III P t A li i d l G
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
39/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 3.
QUERY:------
select inv_detalle.* from inv_header,inv_detalle
where inv_header.nro_tran=inv_detalle.nro_tran
and year(fecha)="2004" and month(fecha)="01"
Estimated Cost: 4
Estimated # of Rows Returned: 11) inv_header: SEQUENTIAL SCAN
Filters: (YEAR(inv_header.fecha )=2004 AND
MONTH(inv_header.fecha )=1 )
2) informix.inv_detalle: INDEX PATH
(1) Index Keys: nro_tran ing_egr orden cod_tv nro_valor
Lower Index Filter:
inv_detalle.nro_tran=inv_header.nro_tran
NESTED LOOP JOIN
Solucin.Se creo el ndice en la tabla inv_headerutilizando el campo fecha.
CREATE INDEX idx_inv_header1 ONinv_header(fecha)
Resultado.Tiempo: 10.4 min.
Mtodo de Acceso: FULL TABLE SCAN
Anlisis
El plan no varia ni en tiempo y ni enel tipo de acceso, pese a que se creoel ndice. El problema esta en lapresencia de funciones en la clusulaWHERE.
PASO 3. PASO 1.
P t III P t A li i d l G
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
40/49
Parte III Propuesta y Aplicacin de la Gua
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Consideraciones Previa
Descripcin delos Pasos deGua
Aplicacin dela GuaPropuesta
Ejemplo 1.
Ejemplo 2.
Ejemplo 3.
Optimizacin Consulta Nro. 3.QUERY:
------
select inv_detalle.* from inv_header,inv_detalle
where inv_header.nro_tran=inv_detalle.nro_tran
and fecha between "01/01/2004" and "31/01/2004"
Estimated Cost: 4
Estimated # of Rows Returned: 1
1) inv_header: INDEX PATH
(1) Index Keys: fecha
Lower Index Filter: inv_header.fecha >= 01/01/2004
Upper Index Filter: inv_header.fecha
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
41/49
Conclusiones
Conclusiones
Recomendacione
s.
Conclusiones
Recomendacione
s.
Los pasos de la presente Gua proporcionan un marco de
referencia para poder encarar el problema de rendimientode consultas SQL costosas.
Los pasos de la Gua pueden ser utilizado en cualquiermomento, porque el Proceso de Optimizacin es:
Dinmico, no siempre se aplica la misma solucin.
Continuo, no tiene una fecha de finalizacin.
Impredecible, no se sabe con certeza cuando sepresentar un problema de rendimiento de consulta.
Debe primar el criterio y la experiencia para el uso de lapresente Gua.
R d i
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
42/49
Recomendaciones
Conclusiones
Recomendacione
s.
Conclusiones
Recomendacione
s.
El bajo rendimiento de las consultas no siempre es
atribuible a la forma como fue formulada la consulta y/ola falta ndice. Otros factores pueden contribuir:
Capacidad de Hardware reducida,
Comunicaciones deficientes,
Mala Configuracin de la Instancia del SGBD
Utilice herramientas automatizadas para OptimizarConsultas, como por ejemplo:
http://www.quest.com/es/
http://www.quest.com/es/http://www.quest.com/es/http://www.quest.com/es/http://www.quest.com/es/ -
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
43/49
MUCHAS GRACIAS.
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
44/49
MUCHAS GRACIAS.
Parte II Fundamentos Tericos
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
45/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Estadsticas de la Base de Datos.
Adems, se utiliza informacin acerca de los ndices
Volver
Parte II Fundamentos Tericos
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
46/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Medidas de Costos.
El costo se mide en funcin de la cantidad de CPUutilizada y de la cantidad de pginas de discorescatadas.
b.1. Bsqueda Lineal (Full Table Scan o Table Scan)
b.2. ndice Primario, igualdad en la clave.
b.3. ndice Secundario, igualdad.
Volver
La mas costosa
La mas eficiente
+/- eficiente
Parte II Fundamentos Tericos
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
47/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
Reglas de Transformacin de Expresiones.Una regla de equivalencia permite transformar una expresion E1en la otra E2, mientras se preserva la equivalencia .
Aplicando las Reglas
Volver
Parte II Fundamentos Tericos
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
48/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
FROM Tabla1, Tabla2,Tablan
Seleccin de Ordenes JOIN.
La clusula FROM no dicta el orden en el cual las tablas deben serprocesadas .
Se evala todas las permutaciones razonables y se estima el costo
total en trminos de tiempo de E/S.
Nmero de Tablas N! Mtodo Optimizado Ahorro
6 720 504 30%
7 5040 1344 73.3%
8 40320 3024 92.5%
9 362880 6048 98.3%
10 3628800 11088 99.7%
16 20922789888000 148512 99.999%
Volver
Parte II - Fundamentos Tericos
-
7/31/2019 30543992 Guia Para La Optimizacion de Consultas
49/49
Parte II - Fundamentos Tericos
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizador
de Consultas
ModeloRelacional
LenguajesRelacional
Sistema deBase de Datos
El Proceso deOptimizacinde Consultas
El Optimizadorde Consultas
Sin embargo,NO SIEMPRE SE ELIGE EL MEJOR PLAN!!!!!!
Seleccin del Plan de Ejecucin.
La seleccin del Plan de Ejecucin Optimo, esta determinado por la
solucin que tenga el menor costo estimado.
Volver
Costo1 Costo2 Coston