Diseño Fisico y Optimizacion en Oracle
Diseño Fisico y Optimizacion en Oracle
Administracin de BD
Administracin de BD
Lgico Especfico
Esquema SQL
Fsico
o bien
PK
PK FK
. .
Estructuras fsicas
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Administracin de BD
Administracin de BD
Administracin de BD
Administracin de BD
Pero adems del diseo fsicos de la BD, en el rendimiento tambin influyen Diseo de los procesos (en C/S) - Separacin entre BD y lgica Restricciones separadas, Vistas, Proc. Almacenados, Disparadores - Conexiones, interaccin y trfico Programacin - Los optimizadores no son perfectos - Optimizacin esttica - Optimizacin dinmica. Estadsticas Plataformas, la red
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Posibilidades del SGBD Posibilidades de los equipos de almacenamiento (ej: RAID) Interaccin entre el SO y
SGBD Equipos de almacenamiento
Administracin de BD
Pruebas y prototipos
Esqueletos de los procesos crticos Simulacin de datos y usuarios
Perfil de carga
Administracin de BD
Administracin de BD
Enfoques
Reactivo: resolver problemas que aparecen en produccin Proactivo: disear el sistema teniendo en cuenta el rendimiento
Administracin de BD
Almacenamiento de datos
Administracin de BD
Datafile1
Datafile2
Segmento1
Ext 2 Ext 3
Segmento2
Datafile3
Bloque 1
Administracin de BD
TEMP: almacena datos temporales ROLLBACK: almacena informacin transaccional DATA: almacena datos de la aplicacin
Administracin de BD
Administracin de BD
Clusula_almacenamiento
STORAGE({ INITIAL entero [K|M] | NEXT entero [K|M] | MINEXTENTS entero | MAXEXTENTS {entero | UNLIMITED} | PCTINCREASE entero | FREELISTS integer | FREELIST GROUPS entero | OPTIMAL [entero [K|M] | NULL ] | BUFFER_POOL {KEEP | RECYCLE | DEFAULT} }...)
Administracin de BD
Clusula_gestin_segmento
SEGMENT SPACE MANAGEMENT {MANUAL|AUTO}
Administracin de BD
Administracin de BD
Parmetros de almacenamiento
DBA_TABLESPACES USER_TABLESPACES: (visualizar con select * from user_tablespaces; )
Administracin de BD
Uso de Tablespaces
Es conveniente reservar diferentes tablespaces para objetos que tienen caractersticas de almacenamiento y uso diferentes:
Objetos del diccionario de datos (SYSTEM) Segmentos de rollback Segmentos temporales Tablas ndices Objetos grandes
Administracin de BD
Segmentos I
Conjunto de extensiones (conjunto de bloques de datos) dedicadas a un objeto de la BD, y almacenado en un fichero. La cantidad de espacio que utiliza est determinada por sus parmetros de almacenamiento:
al crear el objeto (tabla, ndice, cluster, rollback segment) utiliza los parmetros de almacenamiento predeterminados del TABLESPACE en el que se almacena (se permite posterior modificacin).
Administracin de BD
Segmentos II
Cuando las extensiones de un segmento ya no pueden contener ms datos el segmento se amplia con nuevas extensiones. As sucesivamente hasta que: no haya ms espacio disponible en los datafiles de las tablespaces (no ampliables automticamente) hasta MAXEXTENTS por segmento (si definido). No haya ms espacio (cuota) para ese usuario en el TABLESPACE El tamao de la siguiente extensin Oracle lo calcula con la siguiente frmula: NEXT*(1+(PCTINCREASE/100)) Ejemplo (next:4Mb y pctincrease:50%): 1 extensin: = INITIAL 2 extensin: = NEXT= 4Mb 3 extensin: = 4MB*(1+50/100) = 4Mb + 2Mb = 6Mb 4 extensin: = 9Mb
NOTA: Cuidado con el tamao del bloque
Administracin de BD
Segmentos III
Tipos de segmentos: TABLE, INDEX, ROLLBACK, TEMPORARY,
PARTITION, CLUSTER
Administracin de BD
Segmentos IV
Ejemplo:
CREATE TABLE ejemplo ( cod NUMBER(2), nombre VARCHAR2(14) ) STORAGE (INITIAL 100K NEXT 50K MINEXTENTS 1 MAXEXTENTS 50 PCTINCREASE 5);
COMENTARIOS
A partir de la 3 extensin se incrementa un 5% el espacio de la extensin anterior:
52,5 K 52 si el tamao de bloque fuera 2K
Administracin de BD
Extensiones
Conjunto de bloques de datos contiguos de un TABLESPACE Cuando se elimina un segmento, sus extensiones se liberan Agrupacin extensiones libres contiguas cuando pctincrease0 SMON (peridicamente o cuando lo necesita) alter tablespace name coalesce;
Administracin de BD
Administracin de BD
Contras
Encontrar espacio libre contiguo Desperdicio de espacio inicialmente
Administracin de BD
Bloques I
Unidad de acceso a disco para una BD Oracle (unidad mnima de transferencia de informacin) Su tamao se define al crear la BD. Debe ser mltiplo del tamao de bloque del S.O. del servidor (entre 2Kb y 32 Kb). Parmetro de configuracin (create table / create index ...)
[{PCTFREE integer | PCTUSED integer | INITRANS integer | MAXTRANS integer | clusula_almacemanamiento }...]
Administracin de BD
Bloques II
Bloque
Cabecera Bloque
61+(INITRANS*23) si es un bloque tabla 61+(INITRANS*46) si es un bloque ndice o clster (4 * n tablas en cluster) + 4
Overhead
Espacio til
PCTFREE PCTUSED
(zona desbordamiento)
Administracin de BD
PCTUSED: mnimo porcentaje de un bloque que debiera estar ocupado para no admitir ms inserciones.
Por defecto 40
Administracin de BD
VARCHAR2(<4000 bytes)
Administracin de BD
Administracin de BD
Encadenamiento y reorganizacin
Los datos de una fila de una tabla pueden ser demasiado grandes para almacenarlos en un nico bloque de datos vaco. Encadenamiento: Oracle almacena los datos de la fila en una cadena de uno o ms bloques de datos (insercin modificacin).
Administracin de BD
Encadenamiento y reorganizacin
Una sentencia UPDATE incrementa la cantidad de datos en una fila, de modo que la fila no se puede dejar en el bloque de datos Reorganizacin: Oracle intenta encontrar otro bloque con espacio libre suficiente para mantener la fila entera.
Si el bloque est disponible, Oracle mueve la fila entera al nuevo bloque. Oracle guarda la parte de la fila original de la fila migrada apuntando al nuevo bloque que contiene la fila actual, el ROWID de la fila migrada no cambia. Los ndices no son modificados, as apuntan a la localizacin original de la fila.
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Almacenamiento bsico Para aumentar el al rendimiento en el acceso a los datos se pueden utilizar los siguientes mtodos:
LOBs (Large Binary Objects) Indices Tablas organizadas por ndices Clusters y Hash Clusters
Administracin de BD
ndices: motivacin
Estructuras auxiliares para, bsicamente, mejorar el tiempo de bsqueda
WHERE condicin
Igualdad (una o varias filas) Intervalo Prefijo
Administracin de BD
ndices: tipos Arbol-B+ Es el ms habitual Mapa de bits Indices de palabras (full-text indexing)
Ficheros invertidos
Administracin de BD
Clave ndice
......
Punteros a las filas
fila pgina
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Indices en Arbol-B+
Bsqueda de un valor
Bsqueda de un rango
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Indices en Arbol-B+ Son flexibles Degeneracin limitada Tiempo de acceso razonable No tiles para pocos valores
Administracin de BD
ndices multidimensionales: Mapas de Bits AND, OR, contadores Para pocos valores (regin, ao, ..) y pocas actualizaciones DW/OLAP
iar ipe ipr ventas B6 B6 B6 B7 . . 3 3 1 1 . . 43 21 21 21 . . 375 100 20 100 . . 1 2 3 4 . n 1234n ipr 21 0111.. 43 1000.. . . . . iar B6 B7 . . 1110. 0001. . .
Administracin de BD
ndices en Oracle
CREATE [ ] INDEX ndice UNIQUE BITMAP ON tabla (columnasOexpresin) CLUSTER nomcluster TABLESPACE tbesp detallealmacenamiento COMPRESS NOSORT REVERSED Los NULL solo se indexan si es un ndice mapa de bit
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Utilizacin de ndices UNIQUE y no UNIQUE NULLs Coste en espacio Coste en tiempo de actualizacin No definir ndice si:
El SGBD no lo va a utilizar La clave es muy voltil o muy larga
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Tablas organizadas como ndices Contienen datos que son recuperados ms rapidamente que si hubiesen sido almacenados en tablas normales. Es una tabla normal con un ndice en una o ms de sus columnas. ndice y tabla se almacenan juntos:
Tablas que se consultan por la clave primaria con pocas columnas
Administracin de BD
Desventajas
No usar con filas grandes
Administracin de BD
Clusters: motivacin
Grupos de una o ms tablas Las filas se guardan fsicamente juntas porque se usan generalmente juntas Comparten una o ms columnas (clave del cluster)
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Clusters: ventajas En tablas con joins frecuentes o con relacin maestro-detalle Disminuye la E/S de disco Mejora el tiempo de acceso La clave slo se almacena una vez, ahorro de espacio
Administracin de BD
Administracin de BD
Hash Clusters en Oracle Similar a los clusters A la clave de cada cluster se le aplica una funcin de dispersin Bueno para consultas con condiciones de igualdad:
Un solo acceso
Administracin de BD
Particiones en Oracle
Particin horizontal fsica
Repartir una tabla en espacios/ficheros/discos, Paralelismo, loks, copias y recuperacin,
Particin por: rango, expresin, circular, al azar Particiones de ndices Collocation / Alineacin Inserciones/supresiones masivas
Rpido Indices particionados
Administracin de BD
Administracin de BD
Administracin de BD
Administracin de BD
Administracin de BD
Herramientas ETL
ETL: Extraccin, Transformacin y Carga (Loading) ORACLE SQL Loader: herramienta bsica: carga y transformacin Import/Export: Traslado de datos entre diferentes instancias de BBDD Oracle Datawarehouse Builder Embarcadero PowerData
Administracin de BD
SQL Loader
Fichero de texto *.ctl Controla la sesin de carga Fuente de datos a cargar y tipo de datos Tablas y columnas destino Transformaciones de datos Define el resto de ficheros Bad : registros que no se ajustan a la descripcin Discard: registros que no se pueden insertar en la BBDD
Administracin de BD
Administracin de BD
INFILE : fichero fuente INFILE = C:/midirectorio/mifichero INFILE = * : carga desde el fichero de control con BEGINDATA
Administracin de BD
Administracin de BD
Asignacin de columnas
Columna Posicin TipoDatos Delimitador
Columna: nombre de la columna en la tabla Posicin
relativa: POSITION (*) char 30 absoluta:POSITION (1:30) char
Tipo de datos
Integer (n), Smallint, char, (integer|float|decimal) external...
Delimitadores
TERMINATED BY ENCLOSED BY
Administracin de BD
Los ndices se construyen en reas aparte y se actualizan al final NOT NULL: se comprueba para cada registro UNIQUE: se omprueba cuando se reconstruye el ndice, si existen errores INDEX UNUSABLE CLAVES PRIMARIAS (PK) = NOT NULL + UNIQUE CLAVES AJENAS (FK) Y CHECK: no se activan auto. DISPARADORES: Se activan automticamente pero no se disparan durante la carga directa
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Optimizacin de consultas
Administracin de BD
Optimizacin de consultas
Objetivo: disminuir el tiempo de ejecucin de las consultas que se realizan ms frecuentemente sobre una base de datos Cul es el camino de acceso a los datos? Modificar el diseo fsico
Aadir redundancia y modificar la organizacin: aadir o cambiar ndices, dividir relaciones, particionar relaciones Reorganizar las estructuras para mantener las caracterstcas a pesar de borrados o actualizaciones
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Procesamiento de consultas
Anlisis de la consulta
representacin rborea de la estructura de la consulta
Reescritura de la consulta
representacin en lgebra relacional transformacin a un plan lgico ms eficiente:
Administracin de BD
Anlisis de la consulta
Generacin del rbol de la consulta
Comprueba sintcticas de SQL
Administracin de BD
Ejemplo de consulta
ACTOR (nombre,direccion,genero,fecha_nacimiento) ACTUA (pelicula, ao_estreno, actor) Obtener los ttulos de las peliculas en las que participan actores nacidos antes en1960
SELECT pelicula SELECT pelicula FROM ACTUA, ACTOR FROM ACTUA WHERE actor = nombre AND WHERE actor IN ( fecha_nacimiento LIKE '%1960' SELECT nombre FROM actor WHERE fecha_nacimiento LIKE '%1960')
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
<atributo> = <atributo> <atributo> LIKE <patron> actor %1960 nombre fecha_nacimiento Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Administracin de BD
PIpelicul
a
bajar seleccion
SIGMAnombre = actor
X
SIGMAfecha_nacimiento like %1960 ACTUA
ACTOR
bajar proyecciones
Administracin de BD
Administracin de BD
Algoritmos fsicos
Segn el tipo de la estructura (auxiliar) utilizada
Recorrido total (scan) Basada en ndices (index): ej. join natural Basada en una tabla de dispersin (hash) Basado en ordenacin (sort): algunas operaciones se simplifican si los resultados estn ordenados: ej. agrupacin Es posible realizar en paralelo?
Administracin de BD
Tipos de optimizacin
Optimizacin basada en reglas
Heursticas generales basadas en la experiencia del administrador o de los diseadores
Administracin de BD
Administracin de BD
Recoleccin de estadsticas:
Paquete SQL_STAT : Es necesario contar con estadsticas actualizadas
Administracin de BD
EXPLAIN PLAN
EXPLAIN PLAN FOR SELECT e.employee_id, j.job_title, e.salary, d.department_name FROM employees e, jobs j, departments d WHERE e.employee_id < 103 AND e.job_id = j.job_id AND e.department_id = d.department_id;
----------------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| ----------------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 3 | 189 | 10 (10)| | 1 | NESTED LOOPS | | 3 | 189 | 10 (10)| | 2 | NESTED LOOPS | | 3 | 141 | 7 (15)| |* 3 | TABLE ACCESS FULL | EMPLOYEES | 3 | 60 | 4 (25)| | 4 | TABLE ACCESS BY INDEX ROWID| JOBS | 19 | 513 | 2 (50)| |* 5 | INDEX UNIQUE SCAN | JOB_ID_PK | 1 | | | | 6 | TABLE ACCESS BY INDEX ROWID | DEPARTMENTS | 27 | 432 | 2 (50)| |* 7 | INDEX UNIQUE SCAN | DEPT_ID_PK | 1 | | | ----------------------------------------------------------------------------------Predicate Information (identified by operation id): --------------------------------------------------3 - filter("E"."EMPLOYEE_ID"<103) 5 - access("E"."JOB_ID"="J"."JOB_ID") 7 - access("E"."DEPARTMENT_ID"="D"."DEPARTMENT_ID")
Administracin de BD
EXPLAIN PLAN
1) Recorrido serial de toda la tabla employees 2) Recorrido del ndice primario de la tabla jobs 3) Aceeso mediante ROWID a las filas obtenidas en 2) 4) Bucle anidado (por bloques) de los resultados 2) y 3) 5) Recorrido del ndice primario de la tabla departament 6) Aceeso mediante ROWID a las filas obtenidas en 5) 7) Bucle anidado (por bloques) de los resultados 4) y 6) 8) Sentencia SELECT que devuelve los resultados al usuario
Administracin de BD
Administracin de BD
Hardware
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Realizacin de prototipos y simulaciones Implementacin definitiva y mantenimiento Proceso correctivo: deteccin de problemas y bsqueda de soluciones
Grupo de BD Avanzadas. UC3M. 2005-06
Administracin de BD
Administracin de BD
Administracin de BD
Administracin de BD
Informacin de monitorizacin
Parmetros de inicializacin de la BD Diccionario de datos: Vistas DBA_* Vistas dinmicas de rendimiento: V$_*
Se actualizan con la informacin que la instancia genera durante su ejecucin. Solo tenemos acceso para lectura.
Monitorizacin del sistema operativo ADDM: Automatic Database Diagnostic Monitor Alertas de funcionamiento
Grupo de BD Avanzadas. UC3M. 2005-06