Estructuras Logicas y Fisicas

16
Clase 2: Estructuras lógicas y físicas(I) Claudia González ___________________________________________________________________________________ Clase 2: Estructuras Lógicas y Físicas(I) Introducción a Segmentos, Extents y bloques de datos Bloque de datos Inittrans, Maxtrans Extents Segmentos Cláusula Storage Introducción tablespaces, datafiles Tablespaces Datafiles Tablas Regulares Organizadas por índices Particionadas Clúster Se puede hacer un repaso de la relación entre las estructuras lógicas y físicas.... Relación estructuras lógicas y físicas

Transcript of Estructuras Logicas y Fisicas

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Clase 2: Estructuras Lógicas y Físicas(I)• Introducción a Segmentos, Extents y bloques de datos

• Bloque de datos

• Inittrans, Maxtrans

• Extents

• Segmentos

• Cláusula Storage

• Introducción tablespaces, datafiles

• Tablespaces

• Datafiles

• Tablas

• Regulares

• Organizadas por índices

• Particionadas

• Clúster

Se puede hacer un repaso de la relación entre las estructuras lógicas y físicas....

Relación estructuras lógicas y físicas

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Estructuras Físicas: bloque de datos del sistema operativo, datafile, redo log file, control file.

Estructuras Lógicas: bloque de datos de Oracle, extent, segmento, tablespace, base de datos.

Bloques de Datos, Extents y Segmentos

Introducción

Las unidades de asignación de espacio en la base de datos son los bloques   de   datos,  extents  y  segmentos.   El   nivel   más   fino   de granularidad en que Oracle almacena los datos es el bloque de datos (también llamados bloques lógicos, bloques de Oracle o páginas). Un bloque de datos corresponde a un número de bytes físicos de espacio de la base de datos en disco.

Un segmento es un conjunto de extents, cada uno de los cuales ha sido asignado a una estructura de datos específicas, pertenecientes a un tablespace.  Por   ejemplo,   cada   tabla  de  datos   es   almacenada   en   su propio   segmento   de   datos,   mientras   que   cada   índice   de   datos   es almacenado en su propio segmento de índices. Si la tabla o índice es particionado, cada partición es almacenada en su propio segmento.

Bloques de Datos

Oracle maneja el espacio de almacenamiento en  datafiles  de una base de datos en unidades llamadas bloques de datos. Un bloque de datos es la unidad más pequeña de datos usada por una base de datos. Oracle solicita los datos en múltiplos de los bloques de datos de Oracle y no del sistema operativo.   El   tamaño   estándar   del   bloque   se   puede   conocer   consultando   el   parámetro DB_BLOCK_SIZE. Los tamaños de los bloques de datos deben ser un múltiplo de los tamaños de bloques del sistema operativo, entonado para evitar I/Os innecesarios.

Formato del Bloque de datos

EncabezadoEl encabezado contiene información general del 

bloque,   como   la   dirección   del   bloque   y   el   tipo   de segmento (datos, índices).

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Directorio de tablasContiene información acerca de las tablas que contienen tuplas en el bloque.

Directorio de RegistrosContiene información de las tuplas actuales en el bloque (incluyendo direcciones para cada row 

piece “trozo de registro” en el área de datos). Después que el espacio ha sido asignado en el directorio de registros de un bloque de datos, éste no es reclamado cuando el registro es borrado. Oracle reutiliza el espacio sólo cuando se insertan nuevos registros en el bloque.

OverheadEl   encabezado   del   bloque   de   datos,   directorio   de   tablas   y   directorio   de   registros   son 

denominados de forma colectiva como overhead.

Datos de los registrosContiene la tabla o datos de índices. Los registros puede atravesar bloques.

Espacio libreEl espacio libre es asignado para la inserción de nuevos registros y para la actualización de 

registros que requieran espacio adicional. En los bloques de datos asignados para segmentos de datos de una tabla o clúster o para los segmentos de un índice, el espacio libre puede almacenar registros de transacciones.  Un registro de una  transacción es requerido un un bloque para cada  instrucción de INSERT, UPDATE, DELETE y SELECT FOR UDATE que accede una o más registros en el bloque. En la mayoría de los SOs un registro de una transacción requiere 23 bytes.

Manejo del Espacio Libre

El espacio libre en un segmento se maneja mediante el uso de bitmaps en lugar de listas.El espacio liberado por una transacción de DELETE y UPDATE puede utilizarse para nuevas 

instrucciones de INSERT si:• Las instrucción de INSERT es de la misma 

transacción   y   aparece   luego   de   la instrucción   que   libera   espacio,   esta instrucción   puede   usar   el   espacio   libre inmediatamente.

• La   instrucción   de   INSERT   esta   en   otra transacción,   no   pertenece   a   aquella   que liberó el espacio, por lo que debe esperar 

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

por una instrucción de commit de aquella que libera el espacio para poder utilizarlo.El espacio liberado puede o no ser contiguo con el área de espacio libre en el bloque.  Oracle 

fusiona los espacios libres sólo cuando: una instrucción de INSERT o UPDATE intenta usar un bloque que contiene suficiente espacio libre para contener un nuevo trozo de un registro y el espacio libre esta fragmentado.

Parámetros de los bloques

PCTFREE: el parámetro  PCTFREE  especifica el mínimo porcentaje de un bloque de datos para ser reservado como espacio libre para posibles actualizaciones de registros que han sido insertados en el bloque.

PCTUSED:   el   parámetro  PCTUSED  especifica   el porcentaje mínimo de un bloque que puede ser usado para un registro más el overhead antes de que nuevos registros   sean   añadidos   al   bloque.   Después   que   un bloque se llena al límite determinado por el PCTFREE, Oracle   considera   el   bloque   no   disponible   para   la inserción de nuevos registros hasta que el porcentaje del bloque cae por debajo del parámetro  PCTUSED. Hasta que este no se alcance,   Oracle utiliza el espacio libre del   bloque   de   datos   sólo   para   actualizaciones   de registros que se encuentren en el bloque.

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Explicar bien el gráfico anterior...

INITTRANS y MAXTRANS permiten especificar el número inicial y máximo de  “slots”  para transacciones concurrentes que se crearán en el bloque que almacene índices o datos. Los  “slots”  de transacciones   se   utilizan   para   almacenar   la   información   de   las   transacciones   que   están   haciendo cambios sobre el bloque de datos en un instante dado. Una transacción puede utilizar un  “slot”  si está cambiando mas de una fila o entrada de un índice. 

INITTRANS, cuyo valor por defecto es 1 para los segmentos de datos y 2 para los segmentos de índices, garantiza un mínimo nivel de concurrencia. Por ejemplo, si INITTRANS se define como 3 para cierto objeto lógico (y por lo tanto para los bloques de datos de los   extents   incluidos en los segmentos asociados al objeto), se asegura que al menos tres transacciones concurrentes podrán hacer cambios en el bloque. Si se requiere más espacio (más transacciones concurrentes requieren de alguno de los bloques de datos en el segmento) el espacio se tomará del espacio libre del bloque. 

MAXTRANS,  cuyo valor  por  defecto  es  de  255,  delimita  el  número de   transacciones  que pueden hacer cambios a los datos en un bloque de datos o índices. Una vez definido, este parámetro garantiza   que  habrá   suficiente   espacio   en   el   bloque  para   albergar   la   información  del   número  de 

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

transacciones indicadas.

Extents

Un extent es una unidad lógica de asignación de espacio de almacenamiento en una base de datos hecha de un número continuo de bloques de datos.  Uno o más extents  hacen un segmento. Cuando el espacio existente en el segmento está completamente usado, Oracle asigna un nuevo extent para el segmento.

Cuando se crea una tabla, Oracle asigna el segmento de datos de la tabla con un extent inicial que se corresponde con un número de bloques de datos. Si los bloques de datos del extent inicial del segmento llegan a estar llenos y se requiere más espacio, Oracle asigna un extent incremental para el segmento. Un extent incremental es un extent subsiguiente del mismo tamaño que el anterior o más grande. Por propósitos de mantenimiento, el encabezado del bloque de cada segmento contiene un directorio de los extents en el segmento. 

Determinar el número y tamaño de los extents

Los parámetros de almacenamiento expresados en términos de extents definen los segmentos. Se pueden especificar estos parámetros en cada tabla y de no hacerlo se utilizan los del tablespace. Antes de Oracle8i, los tablespaces eran creados como dictionary managed. Los tablespaces manejados por el diccionario delegan el registro de la utilización del espacio a tablas del diccionario de datos. Desde Oracle8i se pueden crear tablespaces locally managed, que utilizan bitmaps (en lugar de tablas del diccionario de datos) para registrar el  espacio libre e utilizado. Debido al  mejor desempeño y facilidad de mantenimiento de los tablespaces locally managed se toma como defecto que todos los tablespaces excepto SYSTEM serán locally managed.

¿Cómo son asignados los Extents?Inicialmente se determina un datafile candidato en el tablespace y luego se busca en el bitmap 

del  datafile   el número de bloques libres requeridos. Si el  datafile  no tiene suficiente espacio libre adyacente, entonces Oracle  busca en otro datafile.

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

En los  tablespaces  manejados por el  diccionario de datos, cuando un segmento requiere un extent más grande de los extents disponibles, Oracle identifica y combina los extents continuos para formar uno más grande.  Ésto se denomina fusión de extents.  Este  proceso no es necesario  en los tablespaces manejados localmente, porque los bitmaps registran automáticamente el espacio libre. 

¿Cuándo son liberados los extents?En general, los extents de un segmento no son liberados por un tablespaces hasta que se borra el 

objeto que almacena los datos en el segmento.

Cuando Oracle completa la ejecución de una instrucción que requería un segmento temporal, automáticamente borra el  segmento temporal  y regresa los extents asignados para el  segmento al tablespace asociado (como extents libres). 

Muchas operaciones de ordenamiento pueden usar segmentos de ordenamiento en un tablespace temporal. Estos  segmentos de ordenamiento  son asignados sólo una vez para la instancia y no son liberados después del ordenamiento, pero permanecen disponibles para muchas otras operaciones de ordenamiento. Sólo ocurre cuando se posee un tablespace temporal.

Segmentos

Un   segmento   es   conjunto   de   extents   que   contiene   todos   los   datos   de   una   estructura   de almacenamiento lógica (como puede ser una tabla) en un tablespace.  Por ejemplo para cada tabla, Oracle asigna uno o más extents para forma un segmento de datos de la tabla.

Oracle utiliza 4 tipos de segmentos:•  Segmentos de Datos•  Segmentos de Índices

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

•  Segmentos Temporales•  Segmentos de Ordenamiento

Segmentos de Datos

Son utilizados para almacenar los datos de:• Una tabla que no es particionada o clúster• Una partición de una tabla particionada• Un clúster de tablas

Segmentos de Índices

Cada índice no particionado tiene un segmento para almacenar sus datos. En el caso de los índices particionados cada partición tiene un segmento asignado

Segmentos Temporales

Las siguientes operaciones requieren del uso de segmentos temporales:

• CREATE INDEX

• SELECT ... ORDER BY

• SELECT DISTINCT ...

• SELECT ... GROUP BY

• SELECT ... UNION

• SELECT ... INTERSECT

• SELECT ... MINUS

Los segmentos   temporales   se  pueden almacenar   en  cualquier   tablespace  disponible  para  el usuario,  uno de esos puede ser el   tablespace temporal,  se usa por defecto cuando el usuario tiene asignado algún tablespace temporal. Si no hay ningún tablespace temporal definido para el usuario se utiliza SYSTEM.  Oracle borra los segmentos temporales cuando la instrucción se completa.

Las tablas temporales se almacenan en segmentos temporales. Las tablas temporales pueden tener el alcance de una transacción o de una sesión. Dependiendo de su alcance son borradas cuando la transacción o la sesión termine.

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Segmentos de Ordenamiento

Los segmentos de ordenamiento son usados cuando un segmentos es compartido por muchas operaciones de ordenamiento. Un segmento de ordenamiento existe para cada instancia que lleva a cabo una operación de ordenamiento en un tablespace dado. 

Los segmentos de ordenamiento crecen, mediante la petición de extents, hasta que el tamaño del segmento   es   mayor   o   igual   a   la   demanda   total   de   almacenamiento   de   todas   las   operaciones   de ordenamiento activas en una instancia, no son liberados.

Cláusula Storage

INITIAL Tamaño, en bytes, del primer extent asignado cuando un segmento es creado. Este parámetro no puede especificarme mediante una instrucción ALTER.

NEXT Tamaño,   en   bytes,   del   próximo   extent   incremental   a   ser   asignado   a   un segmento.  El   segundo   extent   es   igual   al   tamaño   asignado   en  NEXT.  Los siguientes extents tendrán el tamaño del NEXT previo multiplicado por (1 + PCTINCREASE/100).NEXTi=(1+ PCTINCREASE/100) NEXTi­1. Hacer ejemplo...

PCTINCREASE Porcentaje  que  representa  el   incremento del   tamaño del  nuevo extent  con respecto al anterior extent asignado a un segmento. Si el PCTINCREASE es 0, entonces todos los extents son del mismo tamaño. Si el PCTINCREASE es mayor que 0, entonces cada NEXT extent debe ser calculado, y crecerá en el porcentaje especificado en el PCTINCREASE. PCTINCREASE no puede ser negativo. 

MINEXTENTS El número total de extents para ser asignados cuando el segmento es creado. Esto permite una gran asignación de espacio en el momento de creación, aún si el espacio contiguo no esta disponible. 

MAXEXTENTS El número total de extents, incluyendo el primero, que pueden ser asignados para un segmento.

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Tablespaces, Datafiles

Una base de datos Oracle consiste de una o más unidades de almacenamiento lógico llamados tablespaces, que almacenan colectivamente todos los datos de la base de datos. Cada tablespace en una base de datos Oracle consiste de uno o más archivos llamados datafiles, que son estructuras físicas del sistema operativo. Los datos de una base de datos son almacenados colectivamente en datafiles que constituyen cada tablespace de la base de datos.

Oracle internamente utiliza interfaces estándar de file system para crear y borrar archivos según lo necesite para las siguientes estructuras de la base de datos:

• Tablespaces• Online redo lo files• Control files

Tablespaces

Tablespace SYSTEM

Oracle crea el  tablespace SYSTEM automáticamente cuando la base de datos es creada.  El tablespace SYSTEM esta siempre online cuando la base de datos esta abierta. En una base de datos donde el   tablespace SYSTEM es locally managed, no pueden crearse  tablespaces que manejen los extents   mediante   el   uso   del   diccionario.   El   tablespace   SYSTEM   siempre   contiene   las   tablas   del diccionario de datos de la base de datos completa.  Las tablas del diccionario de datos están en el datafile 1.

Todos   los   datos   almacenados   por   causa   de   programas  stored   PL/SQL  (procedimientos, funciones, paquetes y triggers) residen en el tablespace SYSTEM.

Undo tablespaces

Son utilizados  para   información  de  undo.  Cada   transacción,   a  penas   se   ejecuta   la  primera operación DML, es asignada a un segmento de undo  en el tablespace de undo actual. Si la instancia no tiene un tablespace de undo, la transacción se asigna al segmento de undo del tablespace SYSTEM.

Cada tablespace está compuesto de un conjunto de datafiles de undo que son locally managed. Como otros tipos de tablespaces, los bloques de undo son agrupados en extents y el status de cada 

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

extent es representado en un bitmap. 

Tablespace Temporal

Cuando SYSTEM es locally managed sus segmentos no se pueden utilizar como segmentos temporales. Para aquellos manejados por el diccionario de datos si se puede.

Uso de múltiples tablespaces

Se pueden utilizar varios tablespaces para llevar a cabo las siguientes tareas• Control de la asignación del espacio del disco pata una base de datos.• Asignación de cuotas específicas para los usuarios de la base de datos.• Control de la disponibilidad de los datos mediante el estado online/offline de los tablespaces• Desarrollar backups parciales de la base de datos o operación de recuperación• Destinar el almacenamiento de los datos entre dispositivos para mejorar el desempeño.

Manejando el espacio en los tablespaces:

El manejo del espacio en los tablespaces se puede llevar a cabo mediante:• Tablespaces Locally Managed: el manejo de los extents es realizado por el tablespace• Tablespaces Dictionary Managed: el manejo de los extents es realizado por el diccionario de 

datos.

El método para el  manejo del espacio en un  tablespace se especifica en el  momento de  la creación.

Tablespaces Locally Managed:Un  tablespace  que  maneja   sus  propios   extents  mantienen  un  bitmap  en  cada  datafile  para 

resguardar el registro del estado de los bloques con respecto a si están ocupados o libres en el datafile. Cada bit en el bitmap corresponde con un bloque o un grupo de bloques. 

Cuando un  extent  es  asignado o  liberado para su  reutilización,  Oracle  cambia el  valor  del bitmap para reflejar el nuevo estado del bloque. Este cambio no genera información de rollback debido a que no actualiza las tablas en el diccionario de datos.

Entre las ventajas sobre los tablespaces manejados por el diccionario de datos se tiene:• El manejo local de los extentes automáticamente registra la adyacencia del espacio libre, 

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

eliminando la necesidad de fusionar los extents libres adyacentes.• El manejo de los extents   localmente evita  operaciones de manejo de espacio recursivo. 

Como las que pueden ocurrir en los tablespaces manejados por el diccionario si el consumo o liberación de espacio en un extent resulta en otra operación que consume o libera espacio en una tabla del diccionario de datos o un segmento de rollback.

¿Cómo se libera el espacio libre y utilizado en un segmento?

• Automáticamente:  Oracle utiliza bitmaps para manejar  el  espacio libre en el  segmento.  Un bitmap, es un mapa que describe el estado de cada bloque de datos en un segmento con respecto a la cantidad despacio en el bloque disponible para la inserción de registros. Mientras más o menos espacio este disponible en un bloque de datos, su nuevo estado es reflejado en el bitmap. Los bitmaps permite a Oracle manejar el espacio libre más automáticamente, de esta manera el manejo del espacio se denomina manejo automático del espacio del segmento.

• Manualmente: Oracle utiliza un free list para el manejo del espacio libre en un segmento. Free list son listas de los bloques de datos que tienen espacio disponible para la inserción de tuplas. Manejo manual.

Tablespaces Dictionary ManagedPara un tablespaces que maneja sus extents mediante el uso del diccionario de datos, Oracle 

actualiza las tablas apropiadas en el diccionario de datos siempre que un extent es asignado o liberado. Oracle además almacena información de rollback por cada actualización en las tablas del diccionario de datos. Como las tablas del diccionario de datos y los segmentos de rollback son parte de la base de datos, el espacio que ellos ocupan esta sujeto a las mismas operaciones de manejo de espacio de los otros datos.

Datafiles

Oracle   crea   un   datafile   para   un   tablespace   mediante   la asignación de una cantidad específica de espacio en disco más el overhead requerido para el encabezado del archivo.

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

Cuando un datafile es creado, el espacio asignado en disco  es   reclamado  y   se   le   da  un   formato,   pero  no contendrá  ningún dato del usuario.  Oracle reserva el espacio   para   resguardar   los   datos   para   segmentos futuros   asociados   al   tablespace.   A   medida   que   los datos crecen en el tablespace, Oracle utiliza el espacio libre   en   el   datafile   para   asignarlo   a   los   extents   del segmento.

Un objeto de un esquema no corresponde a un datafile específico. Un datafile es un repositorio para los   datos   de   cualquier   objeto   en   un   tablespace específico.   Oracle   asigna   espacio   para   los   datos asociados con un objeto del esquema en uno o más datafiles de un tablespace. Por lo cual, un objeto puede atravesar más de un datafile.

Estructura Física para el Almacenamiento de Datos en Tablas

Las tablas son la unidad básica de almacenamiento de datos en Oracle, se puede escoger entre las siguientes estructuras físicas de almacenamiento para una tabla:

Tablas Regulares

Tablas heap.

Tablas particionadas

Permiten particionar los datos en piezas más pequeñas y manejables, llamadas particiones o aún subparticiones.   Los   índices   pueden   particionarse   de   la   misma   manera.   Cada   partición   puede   ser manejada individualmente y puede operar  independientemente de otras particiones, proveiendo una estructura que puede ser entonada más apropiadamente para su disponibilidad y desempeño. Se toca en  detalle en la siguiente clase.

Tablas Organizadas por Índice

Una   tabla   organizada   por   índice   tiene   una   organización   que   es   una   variante   del   árbol   B primario. De forma diferente a una tabla ordinaria (heap), cuyos datos son almacenadas como una colección no ordenada, los datos para una tabla organizada por índice son almacenados en un un árbol 

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

B, organizados por la clave primaria. Junto con las columnas de la clave primaria se almacenan el resto de   las   columnas   también.   Cada   entrada   en   el   árbol   B   contiene:  <primary_key_value , non_primary_key_column_values> .

Las tablas organizadas por índice son similares a la configuración de una tabla ordinaria y un índice en una o más de las columnas, pero en lugar de mantener por separado las dos estructuras, una para la tabla y otra para el árbol B, la base de datos mantiene solamente un único árbol B. En lugar de almacenarse un apuntador (rowid) para recuperar el registro en la tabla, se almacenan las columnas no claves.

Tablas Organizadas por índice con área de Overflow

Las entradas de un  índice en un árbol  B generalmente son bastante pequeñas,  porque ellas consisten únicamente del valor de la clave y un apuntador (rowid). En las tablas organizadas por índice, sin   embargo,   las   entradas  del  árbol  B  pueden   ser  grandes,   porque  ellas   consisten  de  un   registro completo. Esto podria afectar el desempeño en caso de ser registros muy grandes. Por ellos Oracle provee la clásula OVERFLOW, se puede especificar un tablespace de overflow, de ser necesario, y el registro se dividirá en dos partes, una que será almacenada en el árbol B y la otra el área de overflow.

Las entradas en el árbol contendrán los valores de la clave primaria, opcionalmente algunas columnas no claves  y un apuntador (rowid físico) señalando al área de overflow donde se encuentra el resto del registro.

Con el OVERFLOW, se pueden utilizar dos cláusulas:   PCTTHRESHOLD e INCLUDING, para controlar como Oracle determina cuando un registro debe ser almacenado en dos partes y a partir de cuál columna se particiona el registro. 

Usando PCTTHRESHOLD, se puede especificar el valor límite como un porcentaje del tamaño del bloque, si todas las columnas no claves pueden ser acomodadas en ese límite especificado, el registro 

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

no se particionará. De otra manera comenzando con la primera columna no clave que no pueda ser acomodada, el resto de las columnas no claves será almacenadas en el área de overflow.

La cláusula  INCLUDING permite especificar el nombre de la columna, entre las columnas no claves, durante la creación de la tabla, tal que el resto de las columnas que se encuentren después de esta columna serán almacenadas en el área de overflow. Aunque dependiendo del PCTTHRESHOLD, algunas columnas no claves que se encuentren antes de la columna especificada con la cláusula INCLUDING podrían tener que almacenarse en el área de overflow.

Tablas Cluster

Son una estructura física para almacenar los datos en una tabla. Un cluster es un grupo de tablas que comparten los mismos bloques de datos porque ellas comparten columnas comunes y son usadas juntas frecuentemente. Por ejemplo las tablas  employees y departments comparten la columna department_id. Al clusterizar las tablas  employees y departments, Oracle almacena físicamente todos los registro para cada departamento junto con su correspondientes empleados en el mismo bloque de datos, como se muestra a continuación:

Entre las ventajas que ofrece esta estructura se tiene● El I/O de disco reduce para los joins de las tablas clusterizadas.

Clase 2: Estructuras lógicas y físicas(I) Claudia González___________________________________________________________________________________

● El tiempo de acceso mejora para los joins de las tablas clusterizadas.● La clave del closter es almacenada sólo una vez en el cluster y en el índice del cluster, sin 

importar cuantos registros de diversas tablas la contengan. Por lo tanto, se requiere menos espacio para almacenar la estructura del cluster y el índice que las tablas no clusterizadas.

Hash Clusters

Los Hash cluster agrupan las tablas de datos en una manera similar al índice regular del cluster (que utiliza un índice en lugar de una función de hash). Sin embargo, un registro almacenado en un hash cluster se basa en el resultado de aplicar una función de hash al valor de la clave de los registros del cluster. Todos los registros con el mismo valor de la clave son almacenados juntos en el disco. Los Hash cluster son una mejor opción que el clúster regular con un índice o una tabla indexada cuando una tabla   se   requiere   con   frecuencia   para   consultas   de   igualdad   (por   ejemplo  para   retornar   todos   los registros para el departamento 10). El valor de la clave de hash resultante apunta directamente al área n disco que almacena los registros. 

Para  usar  hashing   se  debe  crear  un  hash  cluster  y   cargar   las   tablas   en  el   cluster.    Oracle almacena  físicamente   los  registros de una  tabla  en el  hash cluster  y   los  retorna de acuerdo a  los resultados de la función de hash. Oracle usa una función de hash para generar una distribución de los valores numéricos, llamados valores de hash, que esta basada en los valores específicos de la clave del cluster. 

¿Oracle tiene una estructura de hash? Para una sóla tabla se puede usar el hash cluster como una  estructura de hash simple.