Los datos en la BD son almacenados físicamente en bloques
Oracle: la mínima unidad de espacio físico, y es un múltiplo del bloque del SO
(2 Kb usualmente). El tamaño del bloque Oracle se fija por el parámetro
DB_BLOCK_SIZE del fichero init.ora. Un tamaño grande de bloque mejora la
eficiencia del cache de E/S, pero el tamaño de la SGA aumentará para contener
los mismos DB_BLOCK_BUFFERS, lo que significa un problema de memoria.
Una serie de bloques contiguos es una extensión, que es una
unidad lógica de almacenamiento. Una serie de extensiones es un segmento.
Cuando un objeto es creado, se reserva una extensión en su segmento. Cuando el
objeto crezca, necesitará más espacio y se reservarán más extensiones.
Cada segmento tiene un conjunto de parámetros de
almacenamiento que controla su crecimiento:
initial: tamaño de la
extensión inicial (10k).
next: tamaño de la
siguiente extensión a asignar (10k).
minextents: número
de extensiones asignadas en el momento de la creación del segmento
maxextents: número
máximo de extensiones (99).
pctincrease: Porcentaje
en el que crecerá la siguiente extensión antes de que se asigne, en relación
con la última extensión utilizada (50).
pctfree: porcentaje de
espacio libre para actualizaciones de filas que se reserva dentro de cada
bloque asignado al segmento (10).
pctused: porcentaje de
utilización del bloque por debajo del cual Oracle considera que un bloque puede
ser utilizado para insertar filas nuevas en él.
tablespace: nombre
del espacio de tablas donde se creará el segmento.
Cuando se diseña una BD se ha de tener mucho cuidado a la
hora de dimensionar la BD y prever el crecimiento de las tablas. A continuación,
se hacen algunas consideraciones sobre la gestión del espacio para los
diferentes segmentos.
Segmentos de Datos
El espacio del diccionario de datos se suele mantener más o
menos constante, aunque es crítico que tenga suficiente espacio para crecer en
el espacio de tablas SYSTEM. Así, hay que tener cuidado de colocar las tablas
de usuario, los índices, segmentos temporales y los segmentos de rollback en
otros espacios de tablas.
Además, es recomendable que el espacio de tablas SYSTEM
esté al 50% o 75% de su espacio disponible. Finalmente, asegurarse que los
usuarios no tienen privilegios de escritura en el espacio de tablas SYSTEM.
Las tablas crecen proporcionalmente con el número de filas,
ya que se puede suponer que la longitud de las filas es constante.
Segmentos de Índice
Los índices crecen en tamaño en mayor proporción que las
tablas asociadas si los datos en la tabla son modificados frecuentemente. La
gestión del espacio es mejor si se mantienen los índices de tablas grandes en
espacios de tablas separados.
Segmentos de Rollback
Los segmentos de rollback almacenan la imagen anterior a
una modificación de un bloque. La información en el segmento de rollback se
utiliza para asegurar la consistencia en lectura, el rollback (el valor en el
segmento de rollback se copia en el bloque de datos) y la recuperación.
Es importante comprender cuál es el contenido de un
segmento de rollback. No almacenan el bloque de datos modificado entero, sólo
la imagen previa de la fila o filas modificadas. La información del segmento de
roolback consiste en varias entradas llamadas undo. Por ejemplo, si se inserta
una fila en una tabla, el undo necesitará sólo el rowid de la fila insertada,
ya que para volver atrás la insercion sólo hay que realizar un delete. En las
operación de actualización, se almacenará el valor antiguo de las columnas
modificadas. El segmento de rollback asegura que la información undo se guardan
durante la vida de la transacción.
Un segmento de rollback como cualquier otro segmento
consiste en una serie de extensiones. Sin embargo, la mayor diferencia entre un
segmento de datos y otro rollback es que en este último las extensiones se
utilizan de manera circular. Así, habrá que tener cuidado a la hora de fijar el
tamaño del segmento de rollback para que la cabeza no pille a la cola.
Segmentos Temporales
Los segmentos temporales se crean cuando se efectuan las
siguientes operaciones:
Create Index
Select con distinct, order by, union, intersect y minus.
uniones no indexadas.
Ciertas subconsultas correlacionadas.
Si las tablas a ordenar son pequeñas la ordenación se
realiza en memoria principal, pero si la tabla es grande se realiza en disco.
El parámetro SORT_AREA_SIZE determina el lugar donde se hace la ordenación.
Incrementándole se reduce la creación de segmentos temporales.
Comentarios
Publicar un comentario