Tema 4

Anuncio
ADMINISTRACIÓN DE BASES DE DATOS
DIMENSIONAMIENTO FÍSICO
CASO PRÁCTICO CON SOLUCIÓN
En una aplicación de red social tenemos entre otras tablas, una con la siguiente
estructura:
CONTACTO(usuario,amigo)
Ambos campos pertenecen al dominio que hemos llamado LOGIN que se caracteriza
por ser de tipo VARCHAR2 y tener una longitud media de 12 caracteres de
información. Esta tabla representa los contactos como un grafo dirigido, es decir, la
tupla <pedro,juan> representa que pedro es amigo de juan y <juan,pedro> que juan
también se reconoce amigo de pedro.
Queremos dimensionar para arrancar el servicio con 12.000 usuarios y permitirles
almacenar un máximo de 10 contactos simultáneamente. Considera que la Base de
Datos está configurada para usar bloques de 8K, que las cabeceras de los bloques
tienen un tamaño de 100 bytes y que apenas se producirán cambios de nick. Con esta
información:
a) ¿Cuál sería el valor adecuado para el parámetro PCTFREE de la tabla
CONTACTO?
Como en el enunciado nos indican que apenas se producirán cambios
(modificaciones) de Nick, podemos pensar en cualquier valor de PCTFREE bajo
(hemos dado por válido valores de entre 0% y 10%)
SUPONGAMOS UN VALOR DE 0% PARA PCTFREE
b) Realiza una estimación del volumen de la tabla necesario. (Realiza las
simplificaciones que creas justificadas siempre que razones su uso)
1. En primer lugar estimamos el numero de tuplas a almacenar:
12.0000 usuarios * 10 contactos = 120.000 tuplas
2. Calculamos el tamaño medio de las filas de cada tupla. La fila tiene dos
campos de longitud media 12, no pueden ser nulos y son de tipo VARCHAR2.
Cada VARCHAR2 necesita una marca de longitud de 1 byte ya que es menor
de 255 caracteres. Cada fila necesita 3 bytes de cabecera (EN ESTO HEMOS
SIDO FLEXIBLES AL CORREGIR)
Longitud fila = 2*(12+1) +3 = 29 bytes.
3. Calculamos las filas que podemos almacenar en un bloque. Tenemos un
grado de libertad con PCTFREE. Suponemos PCTFREE=0%. El espacio útil
para información del bloque será 8K menos la cabecera.
Es decir 8192 – 100 = 8092.
El numero de filas que podemos almacenar (de media) en un bloque son
8092/29 = 279,03. Tomamos el entero menor ya que deben estar por completo
en un bloque al tratarse de filas cortas.
4. Calculamos cuantos bloques necesitaríamos 12.000/279 =430,11. En este
caso redondeamos arriba ya que el bloque sobrante estará ocupado. 431
bloques de 8K son 431*8K = 3448K .
Descargar