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 .