Beruflich Dokumente
Kultur Dokumente
Marı́a Esther Vidal (traducción original del anexo del manual de Oracle)
Editado por: Claudia González y Soraya Abad Mota
5 de marzo de 2006
KCBH, UB4, KTBBH, KTBIT, KDBH son constantes cuyo tamaño puede ser obtenido
seleccionando las entradas de la vista V$TYPE SIZE.
1
KCBH: espacio de encabezado que Oracle coloca por defecto a cualquier bloque.
( Valor 20)
UB4: espacio reservado para marcar el tipo de datos contenido en el bloque de datos.
(Valor 4)
KTBBH: espacio requerido para controlar las posibles transacciones concurrentes.
(Valor 48)
KTBIT: espacio requerido para el control de una transacción concurrente sobre el bloque
de datos. (Valor 24)
KDBH: espacio de encabezado que Oracle coloca a cualquier bloque de datos. (Valor 14)
INITRANS: número inicial de entradas de transacciones asignadas a la tabla.
Este procedimiento solamente estima el tamaño de una tabla, no da un valor exacto del número
de bloques. El valor obtenido en estos cálculos se puede utilizar para definir el parámetro INITIAL
de la tabla en el CREATE TABLE. Una vez que se crea y se usa la tabla, el espacio requerido puede
ser mayor que el estimado. Generalmente se requiere mas espacio durante el uso por la forma en
como Oracle administra el espacio libre o el que se va liberando.
2
3. Espacio estimado para los ı́ndices
La cantidad de bloques requeridos para almacenar un archivo de ı́ndice depende de:
El espacio disponible para datos en cada bloque. Se utiliza la misma fórmula que para las
tablas no agrupadas.
El espacio promedio de los valores del ı́ndice. Una vez que se calcula la longitud promedio
de las columnas del ı́ndice, se puede calcular el tamaño promedio de las entradas del ı́ndice
usando la siguiente fórmula:
BytesPorEntradaIndice = entry header + ROWID length + F + V +D
Donde,
3
4. Estimando el espacio requerido para almacenar un cluster
Se esboza un procedimiento para estimar el espacio inicial necesario para las tablas de un clus-
ter. Hay que tomar en cuenta las siguientes restricciones:
Las actualizaciones (insesrciones, modificaciones y borrados) de filas o también las tablas que
contengan columnas más grandes que un bloque de datos, pueden causar fragmentación y
row pieces encadenados.
Una vez que se logre un estimado con el procedimiento descrito a continuación, es necesario
agregar entre un 10 y un 20 % adicional al espacio estimado para darle un valor al parámetro
INITIAL.
Procedimiento para estimar el espacio de un cluster de tablas.
Paso 1: Calcular el espacio realmente disponible en el bloque una vez que se toman en cuenta el
header, el tamaño del bloque y el PCTFREE.
T amanoHEADER = KCBH + U B4 + KT BBH + (IN IT RAN S − 1) ∗ KT BIT + KDBH
donde,
KCBH, UB4, KTBBH, KTBIT, KDBH son constantes cuyo tamaño puede ser obtenido
seleccionando las entradas de la vista V$TYPE SIZE
KCBH: espacio de encabezado que Oracle coloca por defecto a cualquier bloque. ( Valor
20)
UB4: espacio reservado para marcar el tipo de datos contenido en el blqoue de datos.
(Valor 4)
KTBBH: espacio requerido para controlar las posibles transacciones concurrentes. (Valor
48)
KTBIT: espacio requerido para el control de una transaccin concurrente sobre el bloque
de datos. (Valor 24)
KDBH: espacio de encabezado que Oracle coloca a cualquier bloque de datos. (Valor 14)
INITRANS: Número inicial de entradas de transacciones asignadas a la tabla.
Paso 2: Calcular el espacio que ocupa una fila de cada tipo de tabla almacenada en el cluster,
sin tomar en cuenta la clave del cluster en ninguna de estas filas. La clave del cluster es la
colección de atributos comunes a todas las tablas que se van a almacenar agrupadas en el
cluster. En este paso tampoco se considera el row header.
4
Paso 3: Calcular el tamao promedio de una fila completa del cluster (sin incluir el cluster key).
bytesLongF ila(T ablai ) + espacioSin(f ilai ) + rowHeader
Calcular el tamaño promedio de las tuplas de todas las tablas agrupadas (clusters)
Se puede calcular la cantidad mı́nima de espacio requerido por una fila en la tabla Ti del
cluster de acuerdo a la siguiente fórmula:
Si = rowHeader + Fi + Vi + Di , donde
rowHeader: 4 bytes por fila
Fi : si la fila tiene 250 bytes o menos, este valor es 1. En caso contrario es 0.
Vi : si la fila tiene mas de 250 bytes, este valor es 3. En caso contrario es 0.
Di : Espacio requerido por la fila de la tabla Ti , tal y como se calculó en el punto anterior.
Para estimar el número de claves del cluster que pueden almacenarse en un bloque fı́sico:
N umclusterKeysP erBlock = b((EspacioDisponible + 2R)/(SIZE + 2Rt))c