Rendimiento de la Base de datos.
Procesamiento de consultas y
administración del rendimiento
Esquema de la clase
1.
Procesamiento de
consultas
2.
El optimizador del DBMS
Optimizador
Procesamiento de consultas
Heurística vs costo - Expresiones equivalentes - Primitivas de cada operación - Materialización o encauzamiento
- sintaxis en instrucciones
- nombres de tablas, atributos, etc. - resolver vistas
- traducción al algebra relacional extendido
Consulta y traductorAnalizador
Expresión del álgebra relacional Plan de Ejecución Ejecución Resultado de la Consulta Estadísticas Datos E/S disco
$
CPU ConectividadOptimización de Sentencias SQL Equivalentes
SELECT REV.Codigo_Guia
FROM reserva_visita REV INNER JOIN reserva_visita_grado RVG ON REV.Codigo_Reserva = RVG.Codigo_Reserva WHERE RVG.GRADO=3 GROUP BY REV.Codigo_Guia SELECT REV.Codigo_Guia FROM reserva_visita REV
WHERE REV.Codigo_Reserva IN( SELECT RVG.Codigo_Reserva FROM reserva_visita_grado RVG WHERE RVG.GRADO=3)
GROUP BY REV.Codigo_Guia SELECT REV.Codigo_Guia
FROM reserva_visita REV, reserva_visita_grado RVG WHERE RVG.GRADO=3 AND REV.Codigo_Reserva =
RVG.Codigo_Reserva
GROUP BY REV.Codigo_Guia
FROM WHERE SUBCONSULTA
Condición de Unión de las Tablas
Optimizador
Mismo Plan de ejecución
Estadísticas
Niveles de Optimización (solo algunos motores) :
Tiempo de optimización versus Tiempo de ejecución
101050
accesos a disco
Optimizador – Evaluación de expresiones equivalentes
Optimizador
(σ
puesto=‘gerente’Empleado)
⋈
Sucursal.Nro_Sucursal=Empleado.Nro_Sucursal(σ
ciudad=‘Londres’Sucursal)
Estadísticas SELECT *
FROM Empleado INNER JOIN Sucursal on Sucursal.Cod_Sucursal= Empleado.Cod_Sucursal WHERE Empleado.Puesto = ‘gerente’ AND Sucursal.Ciudad = ‘Londres’
Sucursal (50 registros) 5 sucursales en Londres
Empleado (1000 registros) 50 empleados gerentes
1. σ
(puesto=‘gerente’)λ(ciudad=‘Londres’) (Sucursal.Nro_Sucursal=Empleado.Nro_Sucursal)(Sucursal x
Empleado)
Histogramas
3050
accesos a disco
2. σ
(puesto=‘gerente’)λ(ciudad=‘Londres’)(Empleado
⋈
Sucursal.Nro_Sucursal=Empleado.Nro_SucursalSucursal)
1160
accesos a disco
3. (σ
puesto=‘gerente’ Empleado)⋈Primitivas
OPERACIÓN SELECCIÓN
BÚSQUEDA LINEAL
Para clave primaria = Para <> clave primaria =
BÚSQUEDA BINARIA Para clave primaria =
Para <> clave primaria =
Cantidad de bloques que ocupa la tabla
Cantidad de filas que cumplen la Seleccion Factor de bloque b/2 b Fb Log2 b + n Log2 b INDICE PRIMARIO
Para clave primaria = Para <> clave primaria =
N + 1
Niveles del indice
N + n Fb
INDICE SECUNDARIO Para clave primaria =
Para <> clave primaria = N + 1
N + n
SELECCIONES COMPLEJAS (AND, OR, NOT) Se aplican la misma operacion al resultadoAND (Indices compuestos o interseccion de punteros)
Primitivas
OPERACIÓN REUNION
BUCLE ANINADO
Cuando el atributo de busqueda es la clave primaria de la entidad interna, puede frenar la busqueda cuando la encuentra
Si RI cabe en memoria entonces = bI + bE
nE * bI + bE BUCLE ANINADO POR BLOQUE bE * bI + bE BUCLE ANINADO INDEXADO bE + nE * c Costo de la selección – ej N REUNION POR MEZCLA
bE + bI Las tablas deben estar ordenadas por el
atributo de reunión REUNION POR
ASOCIACION
Plan de Ejecución
SELECT ESC.Nombre_Escuela, ESC.Domicilio_Escuela,
TEL.Telefono_Escuela
FROM escuela ESC INNER JOIN telefono_escuela TEL ON
ESC.Codigo_Escuela = TEL.Codigo_Escuela
Estructura de árbol (se lee de
derecha a izquierda)
Estadísticas
Catálogo de estadísticas:
Muestreo
Histogramas
Actualización
Optimizador
Procesamiento de consultas
Consulta y traductorAnalizador
Expresión del álgebra relacional Plan de Ejecución Ejecución Resultado de la Consulta Estadísticas Datos E/S disco
$
CPU Conectividad Consultas y resultados en Memoria – Bind de VariablesSQL embebido estático
La sentencia SQL completa es indicada en el programa
anfitrión. La sentencia SQL se queda preparada para
ejecución (lista para ejecutarse).
SQL embebido dinámico
Parte de sentencia SQL es dejada para definirse
(completarse) al momento de ejecución. No queda
preparada y el DBMS debe compilarla (BIND) antes que
pueda ser ejecutada. -> hard & soft parse
Ajustes del Rendimiento
Hardware
Parámetros del DBMS
Hardware
Base de datos
almacenada
Diccionario de datos (Meta-datos)SGBD (DBMS)
Software a Software b
…
Software nDDL
DML
Servicios que permiten gestionar: Transacciones, concurrencia, accesos, restricciones, archivos, memoria intermadia, optimizar consultas, etc.
Sistema Operativo
Usuarios
Esquema y transacciones
Ajustes del Hardware
Procesamiento
Almacenamiento secundario:
Tipo, Cantidad y Velocidad de Discos,
Estructuras RAID (1 escritura rápida respecto
del 5).
Conectividad (bps)
Almacenamiento primario (RAM)
Ajustes del DBMS
Tamaño de memoria intermedia, de bloques, de
extensiones, particiones, etc.
Intervalos de puntos de revisión, de
actualización de estadísticas, de
reogranizaciones, etc.
Los DBMS
Ajustes del esquema y las transacciones
Diseño del esquema
Manejo de índices y
métodos de almacenamiento
• Dividir tablas mediante relaciones 1 a 1.
• Datos desnormalizados (redundantes). Uso de vistas materializadas. Datos calculados.
• Vistas materializadas: Actualización inmediata (total o incremental) vs actualización diferida (periódica o cuando se realiza una consulta). • Elección de tipos de datos.
• Manejo de Particiones.
• Agrupaciones: índices cluster, archivos agrupados
• Elección de atributos a indizar (optimización de consultas vs. actualizaciones). Tipos de índices. Análisis de tiempos de respuesta.