Please enable JavaScript.
Coggle requires JavaScript to display documents.
Optimizacion, Indice pricipal o primario - Coggle Diagram
Optimizacion
Almacenamiento e Indexación de datos
Métodos de Almacenamiento
Almacenamiento Primario
Ram/Cache
Almacenamiento Secundario
SSD/HDD
Almacenamiento Terciario
Discos Externos
Ficheros y Registros
Registro
Coleccion de dato
Organizacion de registros en disco
Organización no extendida: Si un registro no cae en el bloque este debe ser puesto en el siguiente bloque, por lo tanto si el bloque podía mantener solamente la mitad del registro entonces, al ponerlo en el siguiente bloque, esa mitad del espacio se pierde
Organización extendida:
Cuando un Registro no cae en el bloque i, se pone la parte del registro que se pueda y luego se pone el resto en el siguiente bloque i+1 y desde el bloque i se apunta mediante un puntero al su otra parte en el bloque i+1.
Fichero
Cabecera + secuencia de registros
Fichero Heap o Pila
-Datos Desordenados
-La inserción es eficaz , ya que solo se agregan al final.
-Al realizar una búsqueda esta es lineal
-Borrado: Derroche de espacio
Fichero Ordenado o secuencial
-Datos Ordenados
-Una un campo o clave de ordenación(ej:Nombre)
-Lectura eficaz: Búsqueda Binaria(Log2b)
-La actualización es costosa, ya que se debe mantener el orden.
Ficheros Dispersos
-Se basa en una función 'h' de dispersión(hash)
-Un campo actúa como calve K de dispersión
-h(k)= dirección de bloque
-Espacio de direcciones = cubos de registros
Tipo de registro
Formato de registro + tipo de datos
empleado(char Nombre[30],int sueldo, date FechaNac)
Tipos de registros
Registros de longitud fija
Registros de longitud variable
Se miden en #bytes
Métodos de indexación de datos
Indices
-Un índice es una estructura de datos auxiliar que
acelera la recuperación de registros
-Un índice se asocia a un atributo de una tabla
-Una tabla puede tener varios índices para distintos atributos
Tipos comunes
Ficheros ordenados
Indice Agrupado
Aplica si los registros del fichero están ordenados por un campo no clave
Indice Agrupado II
El índice agrupado básico tiene problemas de inserción y borrado, una solución parcial es reservar uno o mas bloques para cada valor del campo de agrupamiento
Índice Secundario
Es independiente del tipo de fichero de datos.
-Sirve para atributos de valores únicos
-Puede llegar a ser un índice denso
-Permite búsqueda binaria a nivel de índices
Indice Secundario II
Atributos con valores duplicados
-Las entradas del índice tiene valores únicos
-Se agrega un nivel de indirección para manipular los múltiples punteros
Índice Multinivel
Permite búsquedas mas rápidas
Arboles
Arboles de busqueda
-Un árbol de búsqueda permite guiar la búsqueda de un registro dado el valor de uno de sus campos
-Es importante mantener un arbol equilibrado
Arboles B
-Un árbol B siempre estará equilibrado, lo cual evita desperdiciar espacio producto de borrados
Arboles B+
-En un árbol B+, cada valor del campo de búsqueda aparece una vez en algún nivel del árbol
Dispersión (hash)
Cuando indexar un atributo:
-El atributo es clave
-El atributo es usado en condiciones de seleccion
-El atributo es usado en operaciones JOIN
Cuando Usar Índice +B:
-Para consultas de rango
Cuando Usar un Indice hash:
-Para consultas de igualdad o Atributos usados en JOINs
Directrices básicas
-No indexar relaciones pequeñas
-Añadir un índice a cada clave principal
-Añadir un índice secundario a las claves externas que se
usan frecuentemente
-Añadir índices a atributos que participan en JOINs así
como en operaciones que requieren orden
-No indexar atributos que se actualizan frecuentemente
-No indexar atributos que contiene cadenas largas
Optimización de consultas SQL
Seleccion
-Búsqueda lineal (fuerza bruta)
-Búsqueda binaria (sobre un fichero ordenado)
-Utilización de un índice primario (hash)
-Utilización de un índice agrupado (son un atributo
que no es clave)
-Utilización de un índice secundario (B+) sobre una
comparación de igualdad
Proyeccion
-Sencillo si los atributos proyectados incluyen una
clave
-Caso contrario, se tendrá que eliminar repetidos (si
se usa DISTINCT)
-Eliminar repetidos puede ser costoso: Opción 1: ordenar y eliminar
Opción 2: usar una función de dispersión (hash)
Join
-Join de bucle anidado: fuerza bruta, N x M
-Join de bucle simple: si existe un índice hash en
R.A o S.B
-Join de ordenación-mezcla: si los registros de R y
S están ordenados
-Join usando dispersión: si R y S comparten el
fichero de dispersión
Optimización basada
en heurísticas
-Aplicar en primer lugar las operaciones que reducen el tamaño de los resultados intermedios (es decir, selecciones y proyecciones)
-Re-ordenar los nodos hojas del árbol para que las operaciones de selección y join más restrictivas sean ejecutadas antes que otras operaciones
-Usar join en lugar de producto cartesiano
combinado con una selección
Desnormalizacion
-Consiste en modificar la estructura de la base de datos con el objetivo de optimizar la ejecución de operaciones (de consulta) en una base de datos
-Busca un balance entre el costo de consultar y el
costo de actualizar
-También se denomina optimización de uso.
Estructura: semi-coherente
-Redundancia: Permitida
-Valores nulos: Muchos
-Inconsistencia: posible
Combinar una relacion parcial 1-1
-Pre-condiciones: Dos tablas 1-1 se consultan con frecuencia
-Accion: Unir las tablas
-Post-condiciones: Se introducen valores nulos y se puede desperdiciar espacio si los bloques son de largo fijo
Duplicar atributos no clave en relaciones 1-N:
-Precondiciones: Es frecuente preguntar sobre los datos de una tabla y algún atributo no clave de la otra, el atributo no clave tiene baja tasa de actualización.
-Postcondiciones: Se introduce redundancia y se debe cuidar la consistencia.
Duplicar atributos de clave externa
en una relación indirecta 1-N:
Optimización a través de
una Tabla de Búsqueda
View
Vista virtual
-No almacena datos físicamente
-Útil para:
-Simplificar la especificación de una query
-Restringir el acceso a los datos definidos por la vista
-mantener una estructura consistente aun cuando las tablas originales cambien
Vista Materializada
-Una vista materializada almacena los datos (de una consulta) de manera física (disco)
-Los datos son mantenidos en memoria y son
refrescados periódicamente
-Util para acceder rápidamente a los datos
Ventajas
Consistencia/Seguridad/simplicidad/ocupan poco espacio
Desventajas
No son mas eficientes/las virtuales pueden tardar mas o casi igual q una normal/tienen problemas con la actualizacion/las vistas suelen ser solo de lectura
Indice pricipal o primario
Se especifica en el campo clave de ordenación de un fichero ordenado de registro