1 / 68

4. Estructuras de almacenamiento y métodos de acceso

4. Estructuras de almacenamiento y métodos de acceso. Objetivos Conocer diferentes técnicas para colocar los registros de un fichero en el disco Entender la teoría y aplicación de las técnicas de dispersión ( hashing ) interna y externa

xarles
Download Presentation

4. Estructuras de almacenamiento y métodos de acceso

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. 4. Estructuras de almacenamiento y métodos de acceso Objetivos • Conocer diferentes técnicas para colocar los registros de un fichero en el disco • Entender la teoría y aplicación de las técnicas de dispersión (hashing) interna y externa • Conocer cómo usar dispersión para facilitar la expansión dinámica de ficheros • Comprender la teoría y aplicación de los índicesprimarios, secundarios y de agrupamiento • Distinguir entre índices densos y nodensos • Identificar y comprender las ventajas e inconvenientes de cada técnica de organización de ficheros

  2. 4. Estructuras de almacenamiento y métodos de acceso Contenidos 4.1. Conceptos generales de organización de ficheros 4.2. Organización primaria 1. Ficheros no ordenados 2. Ficheros ordenados 3. Ficheros mixtos 4. Ficheros dispersos 5. Árboles B y otras estructuras de datos 4.3. Organización secundaria 1. Índices ordenados de un solo nivel 2. Índices de múltiples niveles 4.4. Ficheros mixtos en Oracle 4.5. Ficheros dispersos en Oracle 4.6. Especificación de índices en SQL y Oracle

  3. 4. Estructuras de almacenamiento y métodos de acceso Bibliografía [EN 2002]Elmasri, R.; Navathe, S.B.:Fundamentos de Sistemas de Bases de Datos. 3ª Edición. Addison-Wesley. (Cap. 5 y 6) [EN 1997]Elmasri, R.; Navathe, S.B.: Sistemas de bases de datos. Conceptos fundamentales. 2ª Ed. Addison-Wesley Iberoamericana. (Cap.4 y 5) [SKS 1998] Korth, H; Silberschatz, A., Sudarshan, S.: Fundamentos de bases de datos. 3ª Edición. McGraw-Hill. (Cap. 10 y 11) [CBS 1998] Connolly et al.: Database Systems: A Practical Approach to Design, Implementation and Management. 2nd Ed. Addison-Wesley (Apéndice B)

  4. 4.1 Conceptos generales de organización de ficheros • Los datos de una BD están almacenadosen un medio de almacenamiento en el ordenador: • Almacenamiento secundario de disco magnético • Estudiaremostécnicas de almacenamiento en disco • Formas de organizar ficheros de datos en el disco • Para conseguir acceso a BD con rendimiento aceptable • Cada técnica tiene ventajas/inconvenientes, conocidas por • Diseñadores y ABDs • Implementadores de SGBD • Una aplicación, en cierto momento, sólo necesita acceder a una porción de la BD. Deberá... • Localizarla en disco • Copiarla a la memoria principal • Procesarla • Reescribirla en disco (si se modificó)

  5. 4.1 Conceptos generales de organización de ficheros Registros, tipos de registro y bloques • Datos en disco organizados en ficherosde registros • Registro • Colección de valores de datos relacionados entre sí • Cada valor (1 o más bytes) corresponde a un campo • Cada campo tiene asociado un tipo de datos • Definición de Tipo de Registro: { (nombre-campo,tipo-datos) }

  6. 4.1 Conceptos generales de organización de ficheros Registros, tipos de registro y bloques • Los registros son almacenados en disco de forma que, cuando se necesiten, su recuperación sea eficiente • Transferencia de datos entre memoria principal y disco en unidades de bloque • Un disco magnético está estructurado en pistas y sectores • División de pista en bloques (páginas) por el SO al formatear el disco • Si se necesita información contenida en cierto bloque... • Se pasa al dispositivo hardware de E/S del disco: • Dirección hardware del bloque • Dirección de un búfer (memoria intermedia) • Lectura: copia el bloque del disco al búfer • Escritura: copia el bloque del búfer al disco

  7. 4.1 Conceptos generales de organización de ficheros Registros, tipos de registro y bloques (y 2) • Tiempo(localización&transferencia)>Tiempo(procesamiento CPU) • La solución... estructurar los ficherosparaminimizarelnº detransferencias de bloquesnecesarias paralocalizar y transferirdatos del disco a memoria principal Búsqueda+ Retardo Rotacional+ Transferencia • Cuello de botella

  8. 4.1 Conceptos generales de organización de ficheros Ficheros, registros de longitud fija y variable • Fichero • Secuencia de registros con igual estructura • Fichero mixto • Contiene registros de diferente tipo • Aumenta la eficiencia de operaciones de reunión • Fichero de registros de longitud fija • Fichero de registros de longitud variable, debido a... • Registros del mismo tipo pero con algún campo … • de longitud variable, • multivalorado, • opcional • Fichero mixto

  9. 4.1 Conceptos generales de organización de ficheros Grabación de registros en bloques, registros extendidos y no extendidos • Los registros se asignan a bloques de disco • tamaño(bloque) = B bytes • Si B > tamaño(registro)  varios registros por bloque • Fichero con registros de longitud fijaR • Si B  Rfactor de bloquesfbl =  B / R  registros • Espacio desocupado = B – ( fbl * R )bytes • Organización extendida: aprovechar este espacio almacenando ahí (una parte de) otro registro (y el resto en otro bloque) • Organización no extendida: no se permite que un registro esté almacenado en varios bloques

  10. 4.1 Conceptos generales de organización de ficheros Grabación de registros en bloques, registros extendidos y no extendidos (y 2) • Fichero con registros de longitud variable • Cada bloque contiene un nº distinto de registros • fbl = número medio de registros por bloque • Es posible estimar el nº de bloques necesarios para contener r registros: r / fblbloques • Puede utilizarse organización extendida o no extendida: • Organización extendidasi el tamaño medio de los registros es grande, pues se reduce el espacio desperdiciado por bloque

  11. 4.1 Conceptos generales de organización de ficheros Descriptor de fichero (cabecera) • Contiene datos necesarios para que los programas puedan acceder a los registros del fichero • Incluye información • para determinar la dirección en disco de los bloques y • descripción de formato de los registros • Fichero con registros no extendidos y de longitud fija: • longitud y orden de campos • Fichero con registros de longitud variable: • caracteres separadores entre campos • marcas de tipo de campo (si campos opcionales) • marcas de tipo de registro (si fichero mixto)

  12. 4.1 Conceptos generales de organización de ficheros Operaciones con ficheros • Operaciones de obtención de datos • Localizar ciertos registros para examinar y procesar su contenido • Operaciones de actualización • Insertar, eliminar o modificar registros • Suele ser necesaria una selección previa con base en una condición de búsqueda • Si varios registros la satisfacen, se localiza el primero de ellos • RegistroActual: • El localizado más recientemente en el búfer (memoria intermedia)

  13. 4.1 Conceptos generales de organización de ficheros Operaciones con ficheros (y 2) • Operaciones sobre un solo registro • Buscar(Localizar) • Leer(Obtener) • BuscarSiguiente • Eliminar • Modificar • Insertar • Operaciones sobre un conjunto de registros • Lectura Ordenada • Buscar Todos • Reorganizar • Operaciones para Abrir y Cerrar ficheros

  14. 4.1 Conceptos generales de organización de ficheros Organización de ficheros vs. Método de acceso • Organización de fichero: • Estructuración de los datos de un fichero en registros, bloques y estructuras de acceso • Técnica de organización de ficheros: cómo colocar los registros y bloques en el medio de almacenamiento y cómo interconectarlos • Objetivo: localización eficiente de los datos • Método de acceso: • Conjunto de programas que permite realizar operaciones sobre los datos de un fichero • Proporciona acceso a los datos; hace uso de las estructuras de acceso (si existen) Combinados, deben maximizar la eficiencia de las operaciones más frecuentes sobre el fichero

  15. 4.1 Conceptos generales de organización de ficheros Tipos de organización de ficheros • Organización Primaria • Determina la forma en que los registros del fichero se colocan físicamente en el disco y cómo se puede acceder a ellos • Fichero No Ordenado (montón) • Fichero Ordenado (secuencial) • Fichero Mixto • Fichero Disperso (direccionamiento directo o hashing) • Árboles B y otras estructuras de datos (en el tema) • Organización Secundaria (o indexada) • Índice Ordenado de un nivel • Índice Multinivel

  16. 4.2 Organización primaria Fichero no ordenado (montículo o montón) • Registros almacenados al final del fichero, en orden de inserción • Inserción muy eficiente • Búsquedalineal • Eliminaciónfísica o por marca • Reorganización para recuperar espacio desocupado • O aprovechar huecos para nuevos registros • Modificación de un registro • Si longitud variable, puede provocar eliminación + inserción • Lecturaordenada supone creación de una copia ordenada del fichero • Suele utilizarse una técnica de ordenación externa

  17. 4.2 Organización primaria Fichero ordenado (secuencial) • Registros almacenados de forma ordenada según valores de cierto campo • campo de ordenación • Si el campo es clave, se le llama clave de ordenación • Ventajas respecto a los ficheros no ordenados • Lectura ordenada muy eficiente si el orden es el de los valores del campo de ordenación: lectura secuencial • Buscar siguiente(en el orden del campo de ordenación) no suele necesitar otro acceso a bloque • Buscar un registro dado su valor del campo de ordenación es rápido: búsqueda binaria • Pero si la Lectura ordenada o Buscar no están basados en el campo de ordenación, estas ventajas «desaparecen»

  18. 4.2 Organización primaria Fichero ordenado (2) • Inserción • supone encontrar posición correcta para el registro y • abrirle espacio mediante desplazamiento de registros (costoso!) • Eliminación física o por marca • con problemas de eficiencia similares a la inserción • Para aumentar la eficiencia de la inserción • Dejar espacio libre en cada bloque para nuevos registros • Fichero de desbordamiento auxiliar, no ordenado, que periódicamente se ordena y fusiona con el fichero principal  Buscar se complica: binaria en principal + lineal en auxiliar • Modificación • Si la condición de búsqueda se basa en el campo de ordenación, usar búsqueda binaria. Si no, búsqueda lineal • Si el campo modificado es el de ordenación, el nuevo valor puede provocar su cambio de ubicación: eliminación + inserción

  19. 4.2 Organización primaria Fichero ordenado (y 3) Fichero secuencial encadenado • Registros ordenados de forma lógica (no física) • Uso de punteros • Mayor flexibilidad • Estructuras de datos para implementar este tipo de ficheros • Listas lineales • Listas múltiples • Anillos o listas circulares • Árboles binarios de búsqueda

  20. 4.2 Organización primaria Fichero Mixto • Almacena registros de diferente tipo • Los registros provienen de distintas tablas ... • Están relacionadas mediante una o varias columnas • Clave externa y clave candidata • Las operaciones más frecuentes son las consultas y no es habitual modificar las columnas comunes • Solicitudes frecuentes de filas relacionadas de ambas tablas • Operaciones que implican la reunión (JOIN) de las tablas • En el fichero... • Los registros relacionados están físicamente adyacentes • clave del fichero mixto: campos «comunes» de los registros • Ventajas del uso de ficheros mixtos • Mayor eficiencia de las operaciones con JOIN entre las tablas • Valores de la clave del fichero mixto almacenados sólo una vez • En Oracle se denominan cluster de tablas

  21. 4.2 Organización primaria Ejemplo de uso deunfichero mixtovs.dos ficheros individuales

  22. 4.2 Organización primaria Fichero de direccionamiento calculado(Hashing) • Permite acceso rápido a registros según una condición de búsqueda de igualdad sobre un solo campo • Campo de dispersión (columna de dispersión) • Si es clave del fichero, se llama clave de dispersión • Función de dispersiónh • Se aplica al valor k del campo de dispersión de un registro (fila) • Y produce la dirección del bloque de disco en el que está el registro • La localización del registro dentro del bloque se hace en el búfer

  23. 4.2 Organización primaria Fichero de direccionamiento calculado (2) • Ejemplos de funciones h • Módulo: h(k) = k mod M • Plegado: Si k=k1k2k3k4, h(k)=k1k2k3k4 ,   { + , xor } • Truncamiento: h(k) = k1k3 • Desventaja del direccionamiento calculado • No se garantiza que valores distintos de k produzcan direcciones diferentes en el fichero Espacio de dispersión > Espacio de direcciones • Estudiaremos las técnicas de dispersión... • Interna • Externa • Dinámica

  24. 4.2 Organización primaria Fichero de direccionamiento calculado (3) Dispersión Interna • Espacio de direcciones destino • Conjunto de M registros • Un array de M posiciones en memoria principal • Función de dispersiónh • Traduce el valor del campo de dispersión en un entero[0, M-1] • Colisión • Al aplicar h a un registro que se desea insertar en el fichero, se obtiene una dirección ocupada • El nuevo registro es un sinónimo

  25. 4.2 Organización primaria Fichero de direccionamiento calculado (4) Dispersión Interna • Técnicas de resolución de colisiones • Direccionamiento abierto • Búsqueda secuencial de una posición vacía • Encadenamiento • Uso de listas de sinónimos en un área de desbordamiento • Dispersión múltiple • Aplicación de una segunda función h • Si se produce colisión, se aplica direccionamiento abierto • h debe ser sencilla y rápida de calcular • Su objetivo esconseguir una distribución uniforme de los registros (sin acumulamientos) • Mínimo número de colisiones • Máximo número de posiciones ocupadas

  26. 4.2 Organización primaria Fichero de direccionamiento calculado (5) Dispersión Externa • Espacio de direcciones destino • Conjunto de cubetas • Cubeta=grupo de registros del fichero(1 o más bloques contiguos) • Función de dispersiónh • Traduce el valor del campo de dispersión en un número de cubeta • El descriptor de fichero contiene, para cada cubeta, la correspondencia número de cubeta  dirección en disco • Decrece el número de colisiones • Los sinónimos se dispersan dentro de una cubeta • Uso de cubeta de desbordamiento (común al resto) y listas de registros sinónimos para insertar registros en cubetas ya completas

  27. 4.2 Organización primaria Fichero de direccionamiento calculado (6) Dispersión Externa • Búsqueda o Localización • Accesodirectosi condición de búsqueda basada en campo de dispersión el más rápido: 1 acceso a bloque • Si no, búsqueda lineal • Lectura ordenada • Costosa: h no suele mantener registros ordenados • Eliminación • Sacarlo de la cubeta y ocupar espacio con un sinónimo • O sacarlo de la lista de desbordamiento (si estaba ahí) • Modificación • Si la condición de búsqueda se basa en el campo de dispersión, usar h para localizar registro. Si no, búsqueda lineal • Si el campo modificado es el de dispersión, el nuevo valor puede provocar su cambio de cubeta: eliminación + inserción

  28. 4.2 Organización primaria Fichero de direccionamiento calculado (7) Dispersión Externa • Asigna al fichero una cantidad de espacio fija • M cubetas • Cada cubeta con capacidad para mregistros • Espacio disponible = m*M registros • Número real de registrosr • Si r < m*M  gran desperdicio! • Si r > m*M  muchas colisiones! • Largas listas de registros de desbordamiento  lenta obtención de registros • Solución: dispersión dinámica

  29. 4.2 Organización primaria Fichero de direccionamiento calculado (8) Dispersión Dinámica • Representación del resultado de la función de dispersiónh como una cadena de bits • Valor de direccionamiento calculado del registro • Los registros se distribuyen en cubetas según los primeros bits de su valor de direcc. calculado • Tipos de dispersión dinámica • Direccionamiento calculado extensible • Direccionamiento calculado lineal 

  30. 4.2 Organización primaria Fichero de direccionamiento calculado (9) Dispersión Dinámica: Direccionamiento Calculado Extensible • Fichero + Directorio • Directorio: array de2d direcciones de cubeta • d es la profundidad global del directorio • Determinación de la posición de un registro: • El valor de los primeros d bits del valor de direccionamiento calculado indican una posición del directorio • Dicha posición contiene la dirección de cubeta en la que almacenar el registro • En el directorio... • Varias posiciones pueden contener la misma dirección de cubeta • La profundidad locald’ de cada cubeta indica el nº de bits considerados: determina su contenido

  31. 4.2 Organización primaria Fichero de direccionamiento calculado (10) Dispersión Dinámica: Direccionamiento Calculado Extensible • Obtención de un registro • Dos accesos a bloque: directorio + cubeta • d puede disminuir o aumentar en 1 bit  reducir a la mitad o duplicarel tamaño del directorio • Duplicar si se desborda una cubeta cuya (d’ = d) • Reducir a la mitad si (d’ < d) en todas las cubetas

  32. 4.2 Organización primaria Fichero de direccionamiento calculado (y 11) Dispersión Dinámica: Direccionamiento Calculado Extensible • Dispersión dinámica vs Dispersión estática  Ventajas • El rendimiento no se degrada a medida que crece el fichero • No se asigna espacio para futuros crecimientos: se añaden cubetas adicionalesconforme se necesitan • Espacio extra para directorio insignificante • Como mucho 2k,k = nº bits del valor de direccionamiento calculado • Reorganizaciones de registros «poco importantes» • Si se divide o duplica una cubeta, sólo se reorganizan sus registros • La más costosa: duplicación o reducción a la mitad del directorio Inconveniente (leve!) • Necesarios 2 accesos a bloque para localizar un registro

  33. 4.3 Organización secundaria:Ficheros de índices • Un índice es una estructura de acceso adicional • Almacenado en disco • Utilizado junto con el fichero de datos (fichero principal) • Fichero principal estructurado según una organización primaria • Agiliza la obtención de registros según valores de cierto campo del fichero:campo de indexación • Primero se accede al índice, que apunta al bloque del fichero donde está almacenado el registro • Es posible crear ... • un índice sobre cualquier campo de un fichero • varios índices sobre un mismo fichero • Un índice puede ser de uno de estos tipos • Ordenado de un nivel: Primario, de Agrupamiento, Secundario • De múltiples niveles: ÁrbolB, B+, B*

  34. 4.3 Organización secundaria Índices ordenados de un nivel • El fichero de índice contiene un conjunto de entradas • Cada entrada incluye dos campos, para almacenar... • Un valor de los almacenados en el campo de indexación • Un puntero al registro que contiene dicho valoro al bloque que lo contiene • Las entradas están ordenadas • Según valores extraídos del campo de indexación del fichero ppal • Es posible realizar búsquedas binarias sobre el índice • Índices densos y nodensos • Denso si contiene una entrada por cada registro del fichero • En otro caso, es no denso (o disperso) • Operaciones sobre ficheros con índices: • Buscar implica búsqueda binaria sobre el índice • Insertar y Eliminarpueden provocar modificación del índice • Menos accesos a bloques, pero coste de mantener el índice

  35. 4.3 Organización secundaria Índice primario • Sobre ficheros con registros ordenados según los valores de un campoclave • El campo de indexación es dicha clave de ordenamiento • El índice es un fichero ordenado con... • Una entrada por cada bloque de fichero principal (índice no denso) • Cada entrada tiene longitud fija y 2 campos: • Valor del campo de indexación de un registroancla de bloque • Puntero al comienzo de cada bloque • Bloques de índice < Bloques de fichero principal • Operaciones sobre ficheros con índices primarios: • Insertar y Eliminarpueden provocar la modificación del índice si afectan a los registros ancla

  36. 4.3 Organización secundaria Índice de agrupamiento • Sobre ficheros con registros ordenados según los valores de un camponoclave • El campo de indexación es dicho campo de agrupamiento • El índice es un fichero ordenado con... • Una entrada por cada valor distinto del campo de agrupamiento del fichero principal (índice no denso) • Cada entrada tiene longitud fija y 2 campos: • Valordistinto del campo de indexación (= de agrupamiento) • Puntero al primer bloqueen que aparecedicho valor • Operaciones sobre ficheros con índices de agrupamiento: • Insertar y Eliminarcostosas y provocan modificación del índice • Alivio si se reserva un bloque (del fichero de datos) para cada valor distinto del campo de agrupación (o varios bloques enlazados) • acelera la recuperación de registros que tienen el mismo valor en el campo de agrupamiento

  37. 4.3 Organización secundaria Índice secundario sobre campo clave • Sobre un campo que es clave del fichero principal, y queno marca la ordenación de los registros de datos • El campo de indexación es dicho campo: clave secundaria • El índice es un fichero ordenado con... • Una entrada por cada registro del fichero principal (índice denso) • Cada entrada tiene longitud fija y 2 campos: • Valor del campo de indexación (= clave secundaria) • Puntero al registro o al bloque en que aparece dicho valor • Operaciones sobre ficheros con índices de este tipo: • Insertar y Eliminarprovocanlamodificación del índice • Tiene más entradas que un índice primario • Ocupa más espacio. Mayor tiempo de búsqueda • Pero mayor “ganancia” respecto a búsqueda en el fichero de datos

  38. 4.3 Organización secundaria Índice secundario sobre campo no clave • Sobre un campo que no es clave del fichero principal, y queno marca la ordenación de los registros de datos • El campo de indexación es dicho campo • Opciones para crear el índice, fichero ordenado con... • Una entrada por cadaregistro del fichero principal (índice denso) • entradas de longitud fija y 2 campos: valor y puntero a registro • valores repetidos del campo de indexación • Una entrada por valor distinto del campo de indexación (no denso) • entradas de longitud variable: valor y varios punteros a bloque • Una entrada por valor distinto del campo de indexación,y un nivel adicional de indirección(índice no denso) • entradas de longitud fija y 2 campos: • Valor del campo de indexación • Puntero a un bloque de punterosa registro

  39. 4.3 Organización secundaria Índice de múltiples niveles • Se construye partiendo del índice sobre el fichero principal de datos en disco (índice de nivel base), mediante creación sucesiva de índices primarios sobre índices • El índice de nivel base puede ser de cualquier tipo, si éste... • tiene entradas de longitud fija y • almacena valores distintos del campo de indexación • El índice multinivel es denso si lo es el de nivel base • Se puede saber si un registro está en el fichero sin acceder a éste • Mejora el rendimiento de la búsqueda binaria: a cada paso desecha más entradas que en un índice de un solo nivel • La inserción, eliminación y modificación de registros de datos... • Son ineficientes si implican inserción o eliminación de entradas en el índice multinivel • Solución: índices dinámicos de múltiples niveles (árboles B, B+, B*)

  40. 4.3 Organización secundaria Tipos de ficheros en función de su indexación • Fichero totalmente invertido • Tiene un índice secundario sobre cada uno de sus campos • Los registros nuevos se insertan al final del fichero (no ordenado!) • Fichero secuencial indexado • Registros ordenados según valores de un campo clave y • Con un índice primario de múltiples niveles sobre dicha clave • Facilita acceso secuencial e individual (directo a través del índice) • Cada SGBDR comercial implementa los índices empleando sus propias técnicas • Oracle emplea, entre otras estructuras, la de árbol B*

  41. 4.6 Especificación de índices en SQL Índices y el SQL estándar • Antiguas versiones del SQL estándar contaban con sentencias para crear y destruir índices • El LDD no incluía cláusulas PRIMARY KEY o UNIQUE • restricción de integridad de clave mediante creación de índice único • La versión SQL-92 no considera los índices • Pues los índices son caminos físicos de acceso a los datos • Restricción de clave mediante cláusulas PRIMARY KEY y UNIQUE • La unicidad de una columna es un concepto lógico

  42. 4.6 Especificación de índices en SQL Índices en los SGBDR comerciales • En muchos SGBD comerciales, el índice ... • es una estructura de datos independiente • se crea y destruye dinámicamente, sin afectar al fichero principal • Conviene crear un índice sobre cierto campo si se va a acceder con frecuencia al fichero según una condición de selección o reunión en la que aparezca dicho campo  El índice incrementará la velocidad de esas consultas o accesos  Cada índice sobre una columna hace que inserción, borrado y actualización sean más complejas y consuman más tiempo • Normalmente, el SGBD creará un índice secundario • Independiente de la ordenación física de los registros • Puede crearse con casi cualquier organización primaria de ficheros • Sobre un mismo fichero puede crearse varios índices secundarios

  43. 4.6 Especificación de índices en SQL Índices en Oracle  • Tipos de índices, según su implementación • Índices de árbol B, o normales; los creados por defecto • Índices detablas • Índices declusters • Índices bitmap • Índices particionados • Índices basados en funciones • Índices de dominio • Por defecto, Oracle almacena las filas de una tabla como una colección desordenada de filas • No cabe hablar de índices primarios o de agrupamiento, tal y como los hemos definido en este tema • Aunque es posible almacenar una tabla con una estructura de índice (árbol B*): index organized table

  44. 4.6 Especificación de índices en SQL Índices en Oracle (2) • Tipos de índices, según la columna (o campo) de indexación • Índice Único • Basado en una columna de tabla cuyos valores son únicos • Índice Primario (un caso particular de Índice Único) • Basado en una clave primaria de tabla • Índice Secundario • Basado en una columna con valores no únicos • Índice Compuesto, también Índice Concatenado • Basado en 2 o más columnas de una misma tabla • Puede ser Único, Primario o Secundario • Un Índice Compuesto Único es útil para imponer la unicidad de la combinación de valores de varias columnas • En Oracle el significado de los conceptos índice primario e índice secundario no coincide con la teoría explicada en el apartado 4.3 de este tema

  45. 4.6 Especificación de índices en SQL Índices en Oracle (3) • Sentencia LDD paracrear índices CREATE INDEX Indice_Genero_Pelicula ON Pelicula ( genero ) ; • Especificación del orden ascendente o descendente de las entradas del índice CREATE INDEX Indice_Año_Pelicula ON Pelicula ( año DESC) ; • Índicecompuesto CREATE INDEX Indice_Nombres_Director ON Director ( apellido1 ASC, apellido2 ASC, nombre DESC ) ; • El índice incrementa la velocidad de las consultas que acceden por... • apellido1 • apellido1 y apellido2 • apellido1 y apellido2 y nombre • Pero el SGBD no usará el índice para consultas que acceden por... • apellido2 • nombre • apellido2 y nombre

  46. 4.6 Especificación de índices en SQL Índices en Oracle (4) • Algunos SGBDR, como Oracle, crean un índice sobre cada clave (primaria o alternativa) de forma automática • Campo de indexación: columna (o conjunto de columnas) especificada como UNIQUE o PRIMARY KEYen el esquema de BD • El SGBD empleará el índice para imponer la restricción de clave • Creación explícita de un índice único • Usado para imponer una restricción de clave sobre una o varias columnas CREATE UNIQUE INDEX Indice_Director ON Director(apellido, fechanacim) ; • En el caso de que la tabla DIRECTOR ya contenga datos, este índice sólo será creado si cada combinación de valores apellido y fechanacim es distinta para todas las filas de la tabla • Oracle recomienda la creación explícita del índice, y no sólo la declaración de la clave como UNIQUE en la especificación de la tabla

  47. 4.6 Especificación de índices en SQL Índices en Oracle (y 5) • Sentencia LDD paradestruiríndices DROP INDEX Índice_Genero_Película ; • Conviene eliminar un índice cuando ya no se espera realizar consultas basadas en el campo de indexación • Desaparece el coste de mantenimiento del índice • Se recupera el espacio de almacenamiento ocupado por el índice • No se puede eliminar un índice creado automáticamente por el sistema (debido a la especificación de una restricción de integridad UNIQUE o PRIMARY KEY sobre una o varias columnas), sino que se debe eliminar (DROP) o desactivar (DISABLE) la restricción de integridad correspondiente

  48. 4.7 Selección de la organización de ficheros y estructuras de acceso Selección: decisiones de diseño físico • La mayoría de SGBDR representa cada tabla base como un fichero de BD, para el cual es necesario especificar... • Tipo de fichero, • Columnas sobre los que definir estructuras de acceso (índices) • Decisiones de diseño físico • Sobre estructuras de almacenamiento(organización de ficheros) • Sobre índices (estructuras de acceso)

  49. 4.7 Selección de la organización de ficheros y estructuras de acceso Sobre estructuras de almacenamiento • Cuándo emplear un fichero no ordenado • La tabla es pequeña • Registros pequeños o factor de bloques elevado • Es inspeccionada con pocos accesos a bloque • Normalmente, las consultas u operaciones más frecuentes sobre la tabla seleccionan o acceden a muchas filas (es decir, más del 20% del total de las filas)

  50. 4.7 Selección de la organización de ficheros y estructuras de acceso Sobre estructuras de almacenamiento • Cuándo emplear un fichero ordenado • La tabla es de tamaño medio-grande y con frecuencia es... • ordenadasegún valores de una columna c caparece en cláusulas ORDER BY, GROUP BY, DISTINCT, o como columna de REUNIÓN o de UNION • accedida con criterios de selección que incluyen un rango de valores de c • procesada secuencialmente en el orden de los valores de c(lectura ordenada) • La tabla no es frecuentemente modificada con INSERT, UPDATE (c) o DELETE

More Related