Este documento describe las herramientas y características de Oracle para el diseño, consulta y análisis de bases de datos. Oracle proporciona herramientas para el diseño de esquemas, consultas ad-hoc, generación de informes y análisis OLAP. También soporta características relacionales orientadas a objetos como tipos de objetos, colecciones y tablas de objetos, así como disparadores para actualizaciones de datos.
1. E$IUDIODI
.. -'
CASOS
'-, ..
- - " ,
• E- .'$ parte describe cómo los distintos sistemas de bases de datos integran
'
:.:,,:.':::'105 diferentes conceptos descritos anteriormente eh el libro. Específica-
, mente, en los capítulos 25, 26-y 27 se cubren tres sistemas de bases de
-'. datos ampliamente utilizados: DB2 delBM, oraclé ySQL server de Microsoft.
, cada uno de estos capítulos muestra características únicas de cada sístema de
bases de datos, herramientas, variaciones y extensiones de SQL y la arquítcc-
. turadel sistema, incluyendo organización del almacenamiento; procesamiento
de consultas, contrcl de concurrencia y recuperación y réplicas.
LOScapituloseubren solamente los aspectos.clave de los productos de bases
:de datos que describen. y por consiguiente, no se deberíán utilizar tomo una
",~n ~ del producto. Además, puesto que los productos se mejo-
ran pertódícemerse, los detaUesdel producto pueden cambiar. cuando se utl-
liza una versión 'particular del producto hay que asegurarse de consultar lbs
'manuales de.Usuaiio para los detalles específicos .
.'. Hay que considerar que tos capítulos en esta parte utilizan terminología
jndustria] en lugar de académlca. Por ejemplo, se utiliza tabla en lugar de
'I'!'~i,lila
'--,
en lugarde tupla y columna en lugar de atributo .
. . . '.
.
.
, .
,
;., ...
- ,.-.
2. ..:'~
.
e ua~do se fund~- Grade en 1977 COtTI? Software Developmcnt Laborat~iies por Larry
Ellison, Bah Miner y Ed Dates no habla productos de bases de datos relacionales comer-
ciales. La compañía, cuyo nombre cambió posteriormente a Oracle, se estableció para
construir un sistema de.gestión de bases de datos como producto comercial y fue la primera en
lanzarlo al mercado. Desde entonces Oraclc ha mantenido una posición líder en el mercado de
las bases de datos relacionales. pero con el paso de los años su producto y servicios ofrecidos
han crecido más allá del servicio de este 'campo. Aparte-de las herramientas directamente rela-
cionadas con el desarrollo y gestión de bases de datos Oracle vende herramientas de inteligen-
cia de negocio, incluyendo sistemas de gestión de bases de datos multidimensionales y un SCT-
vidor de aplicaciones con una integración cercana al servidor de la-base de datos.
Aparte de los servidores y herramientas relacionados con las bases de datos, la compañía
ofrece software para la planificación empresarial de recursos y gestión de relaciones con el
cliente, incluyendo áreas corno finanzas, recursos humanos, manufactura, márketing, ventas y
gestión de cadenas de 'suministro. La unidad Business OnLine de Oracle ofrece servicios en
estas áreas como un proveedor de servicios de aplicación.
Este capítulo cubre un subconjunto de características, opciones y funcionalidad de los pro-
ductos Oracle. Continuamente se desarrollan nuevas versiones de; los productos, por lo que las
descripciones dc los productos están sujetas a cambios. Este conjunto de caracrerísucas des-
crito aquí está basado en la primera versión de Oracle9i. Antes de abordar a fondo cada uno de.
los temas se resumirá la motivación de cada uno de estos tipos de datos y algunos problemas i
importantes del trabajo con ellos.
II
Oracle proporciona una serie de herram icntas para el cacioncs. Soporta varias técnicas de modelado tales
diseño, consulta, generación de informes y análisis de como diagramas E-R, ingeniería de información y aná-
datos para bases de datos, incluyendo OLAP. lisis y diseño de objetos. Oracle Dcsigner almacena el
diseño en Oracle Repository, que sirve como un único
25,1.1.Herramientas para el diseño de bases punto de meradaros para la aplicación.
de datos Los metadaros se pueden entonces utilizar para gene-
rar formularios e informes. Oracle Repository propor-
La mayor parte de las herramientas de diseño de Ora- ciona gestión de la configuración para objetos de bases
ele están incluidas en Oracle Internet Developrnenr Sui- de datos, formularios, clases Java, archivos XML y otros
te. Se trata de una familia de herramientas para los dis- tipos de archivos.
tintosaspectos de desarrollo de aplicaciones, incluyendo La familia también contiene herramientas de de-
herramientas. para el desarrollo de formularios, mode- sarrollo de aplicaciones para generar formularios, infor-
lado de datos, informes y consultas. La familia de pro- mes, y herramientas para distintos aspectos de desa-
ductossoporta el estándar UML (véaseel Apartado 2,10) rrollo basado en Java y XML. El componente de
parael modelado. Proporciona modelado de clases para inteligencia de negocio proporciona JavaBeans pata fun-
generar código para componentes de negocio para un cionalidad analítica tal 'como visualización de datos,
entorno Java así como modelado de actividades para el consultas y cálculos analíticos.
modelado del flujo de control de propósito general. La Oracle también posee una herramienta de desarrolló
familia también soporta XML para el intercambio de de aplicaciones para el almacén de datos. Oraele Ware-
datos con otras herramientas U ML. house Builder. warehouse Builder es una herramienta
La principal herramienta de diseño de bases de dalas para el diseño e implantación de todos los aspectos de
en la familia es Oracle Designer, que traduce la lógica un almacén de datos, incluyendo el diseño del esque-
denegocio y el flujo dedatos en definiciones de esque- ma, asignaciones de datos y transformaciones, proce-
masy guiones procedimenrales para' la lógica de las apli- samiento de carga de datos y gestión de meradatos, Ora-
611
3. '1
,
FUNDAMENTOS DE BASES DE DATOS
ele warehouse Builder soporta los esquemas 3FN y en ciones Java OLAP. Hay muchas razones para evitar un
estrella y puede también importar diseños desde Oracle motor de almacenamiento multidimerísional separado:
Designer.
• Un motor relacional puede dimensionarse a con-
juntos de datos mucho mayores.
25.1.2. Herramientas de consulta
Se puede utilizar un modelo de seguridad común
Oracle proporciona herramientas de consulta, genera- para las aplicaciones analíticas y el almacén de
ción de informes y análisis de datos ad hoc, incluyen- datos.
doOLAP. El modelado multidimensional se puede integrar
Oracle Discoverer es una herramienta basada en Web con el modelado del almacén de datos.
para realizar consultas, informes, análisis y publicación
• El sistema de gestión de la base de datos relacio-
Web ad hoc para usuarios finales y analistas de datos.
nal tiene un conjunto mayor de características y
Permite a los usuarios.abstraer y concretar conjuntos de
funcionalidad en muchas áreas tales como alta dis-
resultados de datos pivote y almacenar cálculos como
ponibilidad, copia de seguridad y recuperación y
informes que se pueden publicar en una serie de forma-
tos tales corno hojas de datos o HTML. Discoverer-con- soporte para herramientas de terceros.
tiene asistentes que ayudan a los usuarios finales a visua- No hay necesidad de formar administradores de
lizar-los datos. corno gráficos. Orac1e9i soporta un amplio bases de datos para dos motores de bases de datos.
conjunto de funciones analíticas tales como la agrega-
ción de clasificación y traslado en SQL. La interfaz de El principal reto al evitar un motor de bases de datos
consulta de Discoverer puede generar SQL del que se' multidimensional separado es proporcionar el mismo
puede aprovechar su funcionalidad y puede proporcio- rendimiento. Un sistema, de gestión de bases de datos
nar a los usuarios finales una rica funcionalidad analíti- mutidimensional que materializa todo o grandes partes
ca. Puesto que el procesamiento tiene lugar en el' sistema de un cubo de datos puede ofrecer tiempos de respues-
,., de gestión de.la base de daros relacional, Díscoverer no
requiere un complejo motor de cálculo en el lado del
ta muy cortos para muchos cálculos. Oracle ha enfoca-
do este problema de dos formas;
111,;.
cliente, y hay una versión de Discoverer con exploración.
~l Oracle Express Server es un 'servidor de bases de
Oracle ha agregado soporte SQL para un amplie
'oi.ll rango de funciones analíticas, incluyendo cubos,
datos multidimensionales. Soporta una amplia variedad
Itil de consultas analíticas, así como previsiones, modela-
abstracciones.conjuntos de agrupación, clasifica-
~"""
4.¡¡j; do y gestión del escenario. Puede utilizar un sistema de
ciones (tanks), agregación de traslado, funciones
íed y lag, cajones de histograma, regresión lineal
gestión de bases de datos relacionales como un dorsal
y desviación estándar, junto con la capacidad de
para almacenamiento o utilizar su propio almacena-
optimizar la ejecución de dichas funciones en el
miento multidímensional de los daros.
motor de la base de datos.
Con la introducción de los servicios OLAPcn Ora-
cly9i, Oracle está evitando un motor de almacenamien- Oracle ha extendido las vistas materializadas para
to separado y trasladando la mayor parte de los cálculos permitir funciones analíticas, en particular los con-
a SQL. El resultado es un modelo donde todos los datos juntos de agrupación. La capacidad de materiali-
residen en el sistema de gestión de la base de datos rela- zar partes o todo el 'cubo es primordial para el ren-
cional, y les-cálculos que no se pueden realizar en SQL dimiento de un sistema de gestión de bases de datos
se realizan en un motor de, cálculo que se ejecuta en el multidimensionales y las, vistas materializadas pro-
servidor de la base de datos. El modelo también pro- porcionan al sistema de gesñón de bases de datos
porciona una interfaz para la programación de aplica- relacionales Ia.capaoidad de realizar lo mismo.
Oracle9i soporta todas las características principales Algunos ejemplos de las extensiones SQL de Oracle
de SQL:1999. con algunas pequeñas excepciones tales son:
como, distintos tipos de datos. Además, Oracle sopor-
• connect by, que es una forma de recorrido de érbo-
ta un gran número de otras constructoras del lengua-
les que permite cálculos al estilo del cierre transi-
je, algunas de las cuales éasan con SQL:1999, mien-
tivo en una única instrucción SQL. Es una sinta-
tras que otras son específicas de Oracle en sintaxis o
-xis específtca de Oracle para una característica que
funcionalidad. Por ejemplo Oracle soporta HlS opera-
Oracle tenía desde' los años 80.
ciones OLAP descritas en el Apartado 22.2, inclu-
yendo clasificación, agregación de traslado, cubos y • Upsert e insércíones en varias tablas. La opera-
abstracción. . ción upsert combina una actualización y una inser-
612
4. caerrecc 25 ORACU:
ción y es útil para combinar datos nuevos con anti- de Oraele para los procedimientos almacenados y tiene
guos en aplicaciones de almacén de datos. Si una una sintaxis similar al utilizado en ellenguaje Ada. Java
nueva fila tiene el mismo valor de clave 'que una se soporta mediante una máquina virtual Java dentro
fila antigua se actualiza la fila antigua (por ejem- del motor de, la base de datos. Oracle proporciona un
plo agregando los valores desde la nueva fila), en paquete para encapsular procedimientos, funciones y
otro caso se inserta la nueva fila en la tabla. Las variables relacionarlas en unidades únicas. Oracle sopor-
inserciones 'en varias tablas permiten actualizar ta SQLJ (SQL incorporado en Java) y IDBe y propor-
varias tablas basándose en una única exploración ciona una herramienta para generar las definiciones de
de los nuevos datos. clases Java correspondientes a tipos de la base de datos
cláusula with, que se describe en el Ap~d04.8.2. definidos por el usuario.
25.2~1.Características relacionales orientadas 25,2.2.Disparadores
a objetos
Oracle Proporciona varios tipos de disparadores y
Oracle tiene soporte extensivo para constructores rela- varias opciones pata el momento y forma en que se
cionales orientados a objetos, incluyendo: invocan (véase el Apartado 6.4 para una introducción
a los disparadores en SQL). Los disparadores se pue-
• Tipos de objetos. Se soporta un único modelo de den escribir en PL/SQL-o Java o como llamadas a C.
herencia para las jerarquías- de tipos. Para los disparadores que se ejecutan sobre instruc-
• Tipos de colecciones . Oracle soporta varrays, que ciones LMD tales como insert, update y delete, Ora-
son arrays de longitud variable, y tablas anidadas. ele soporta disparadores de filas (row) y disparadores
Tablas de objetos. Se utilizan para almacenar obje- de instrucciones (statement). Los disparadoreg de filas
tos mientras se proporciona una vista relacional de se pueden ejecutar una vez por cada fila que se vea
los atributos de los objetos. afectada (actualización o borrado, por ejemplo) por la
operación LMD. Un disparador de instrucciones se
Funciones de tablas. Son funciones que produ- ejecuta solamente una vez por instrucción. En cada-
cen conjuntos de filas como salida y se pueden uti-
caso, el disparador se puede definir tanto corno un dis-
lizaren la cláusula from de una consulta. Las fun-
parador befare o after dependiendo de si se va a invo-
ciones de tablas se pueden anidaren Oracle: Si una
car antes o después de que se lleva a cabo la operación
función de tablas se utiliza para expresar algún for- LMD.
mulario de transformación de datos, el anidamiento
Oraele permite la creación de disparadores instead
de varias funciones permite que se expresen varias
of para las vistas que no pueden estar sujetas a opera-
tránsformacíones en una única instrucción.
ciones LMD. Dependiendo de la definición de la 'Vista
• Vistas de objetos. Proporcionan una vista tíe.tablas puede no ser Posible para Orac1e traducir una instruc-
de objetos virtuales de datos almacenados en una ción LMD en una vista a modificaciones de las labias
tabla relacional normal. Permite acceder o ver los base subyacentes sin ambigüedad. Por ello las opera-
datos en un estilo orientado a objetos.incluso si los cienes LMD sobre vistas están sujetas a numerosas res-
datos están realmente almacenados en un formato tricciones. Se puede crear un disparador lnstead of
relacional tradicional. 'sobre una vista para especificar manualmente las ope-
Métodos. Se pueden escribir en PLlSQL, Java o C. raciones sobre las tablas base que van a ocurrir en res-
puesta ala operación LMD sobre la vista. Oracle eje-
• Funciones de agregación definida-s por el usua-
cura el disparador en lugar de la operación LMD y por
rio. Se pueden utilizar en instrucciones SQL de la
consiguiente proporciona un mecanismo de rodeo de
misma forma que las funciones incorporadas tales
como sum y count. las restricciones sobre las operaciones LMD sobre las
vistas'.
Tipos de datos XML. Se pueden utilizar para Oracle también tiene disparadores que ejecutan otros
almacenar e indexar documentos XML. eventos, tales como el inicio o finalización pe la base
de datos, mensajes de error del servidor, inicio o finali-
Oracle tiene dos lenguajes procedimentalespríncí.. zación de sesión de un usuario e instrucciones LOD tales
pales PL/SQL y Java. PL/SQL fue el lenguaje original como las instrucciones create, alter o drop.
613
5. FUNDAMENTOS' DE BASES DE DATOS
... .....-., '··"_i'(-'
' , .. ,
.e~;~:¡;~AC&NAMl~TO&·IND&XACIÓ~
En la jerga de Oracle, una base de datos consiste en 25.3.2. Segmentos
información almacenada en archivos y se accede a tra- El espacio en un espacio de tablas se divide en unida-
vés de un ejemplar, que es un área de memoria com- des, denominadas segmentos, cada una de las cuales
partida y un conjunto de procesos que interactúa con contiene datos para una estructura de datos especifica.
los-datos en los archivos. Hay cuatro tipos de segmentos
• Segmentos de datos, Cada tabla en un espacio de
25.3.1. Espacios de tablas tablas tiene su propio 'segmento de datos donde se
Una base de dalas consiste en una o más unidades de almacenan los datos de la tabla a menos que ésta
almacenamiento, lógicas denominadas espacios de se encuentre dividida; si esto ocurre, existe un seg-
tablas. Cada espacio de tablas, a su vez, consiste en una mento de datos por división (l~ división CIl Oraclc
o más estructuras físicas denominadas arctiivos de se describe en el Apartado. 25.;}.IQ).
datos. Éstos pueden ser ~chivos gestionados por el sis- Segmentos de índices. Cada índice en un espacio
tema operativo o dispositi vos en bruto. de tablas posee su propio segmento de índices,
Normalmente una base.de datos Oracle tendrá los excepto los índices divididos, los cuales mantie-
siguientes espacios de tablas: nen un segmento de índices por división.
Segmentos temporales; Son segmentos utilizados
• El espacio de tablas del sistema, que siempre se
cuando una operación de ordenación necesita-cscri-
crea. Contiene las tablas diccionario de datos y
bir datos al disto o cuando éstos se insertan en una
almacenamiento para los disparadores y los pro-
tabla temporal.
cedimientos almacenados.
Segmentos de retroceso. Se:trata de segmentos que
ln • Espacios de tablas creados para almacenar los datos contienen información para deshacer los cambios
de usuario. Aunque los datos de usuario se pueden
O almacenar en el espacio de tablas del sistema es
de las transacciones de forma que se pucdadesha-
II;;~ cer una copia no terminada. También juegan un
frecuentemente deseable separar los datos de usua-
lid. papel importante en el modelo de control de con-
rio de los datos del sistema. Normalmentela deci-
b' sión sobre los otros espacios de tablas que se deben
currencia en Oraclc y para la recuperación de la base
",," crear está basada en el rendimiento, dísponibili-
de datos, descrito en los Apartados 25.5.1 y 25.5.2.
11.;"
dad" capacidad de mantenimiento y facilidad de Debajo del nivel de segmentos se asigna espacio a
~il~
administración. Por ejemplo, puede ser útil tener un nivel de granularidad, denominado extensión. Cada
"',h"
varios espacios de tablas para las operaciones tic extensión consiste en un conjunto de bloques contiguos
copia de seguridad parcial y recuperación. de la base de daros. Un bloque de la base de datos es el
Los espacios de tablas temporales. Muchas ope- nivel más bajo de granularidad en el cual Oracle ejecu-
raciones de base de datos requieren la ordenación ta E/S a: disco. Un bloque de hase de la base de datos
de los datos y la rutina de ordenación puede tener no tiene que tener el mismo tamaño que un bloque de
que almacenar éstos temporalmente en el disco si un sistema: operati.vo. pero debería ser un múltiplo.
la ordenación no se puede realizar en memoria. Se Oraele proporciona parámetros de almacenamiento
asignan espacios de tablas temporales a la orde- que permiten un control detallado de cómo sé asigna y
nación, para realizar las operaciones de gestión de gestiona el espacio, tales como:
espacio involucradas en un volcado a disco más
El tamaño de una extensión nueva que se va aasig-
eficiente. nar para proporcionar espacio a las filas que se
Los espacios de tablas también se pueden utilizar insertan en una tabla.
tomo un medio para trasladar dalas entre las bases de • El porcentaje dé utilización de espacio COl) el cual
datos. Por ejemplo; es común trasladar los datos desde un bloque de la base de datos se considera lleno y
un sistema .transaccional a un almacén de datos a inter- con el cual no se introducirán más filas en ese blo-
valos regulares. Grade permite trasladar todos los datos que (dejando algo de espado libre en un bloque se
en un espacio de tablas de un sistema a otro sencilla- puede permitir que las filas existentes aumenten su
mente copiando los -archivos y exportando e importan- tamaño cuando se realizan actualizaciones sin que-
do una pequeña cantidad de metadatos del diccionario damos sin espacio en el bloque).
de datos. Estas operaciones pueden ser mucho más rápi-
das que descargar los datos de una base de datos y des- 25.3.3.Tablas
pués usar un descargador para insertarlas en la otra. Un
requisito para esta característica es que ambos sistemas Una tabla estándar en Orac1e está organizada en mon-
utilicen el mismo sistema operativo. tículo; esto es, la ubicación de almacenamiento de una
614
6. CAPiTULO 25 ORACLE
fila en una tabla no esté basada cn los valores conteni- un valor de clave principal con una unica B'S a disco siem-
dos en la fila y 'se lija cuando fa lila se inserta. Sin embar- pre que no haya desbordamiento para ese bloque de datos.
go, si la tabla se divide. el contexto de la fila afecta a la
partición en la cual ésta almacenada. Hay varias carac-
terísticas y variaciones. Oracle soporta las tablas 'ani- 25.3.4. Tablas organizadas con índices
dadas: esto es, una tabla puede tener una columna cuyo En una tabla organizada con índices los registros se alma-
tipo de datos sea otra tabla. La tabla anidada no se alma- cenan en un índice de árbol B en lugar de en un mon-
cena en línea en la tabla padre sino que se almacena en tículo. Una .tabla organizada con 'índices requiere que se
una tabla separada. identifique una clave única para su uso como la clave del
Oracle soporta tablas temporales donde la duración índice. Aunque una entrada en un índice normal contie-
de los datos es la dc la transacción en la cual se inser- ne el valor de la clave y el identificador de fila de la fila
tan los datos o la sesión de usuario. Los datos son pri- indexada, una-tabla organizada con índices reemplaza el
vados a la sesión y se eliminan automáticamente al fina! identificador de tila con los valores .de la columna para
de su duración. el resto de columnas en la tabla, Comparado con el alma-
Una agrupación es otra forma de organización de los cenamiento de los datos en una tabla en montículo nor-
datos de la tabla (véase el Apartado l l :7). El concepto. mal y la creación de, un índice según las columnas clave,
en este contexto, no se debería confundir con otros sig- una tabla 'Organizada con Indices puede mejorar el ren-
nificados de la palabra agrupación, tales como los rela- dimiento y el espacio. Consideremos la lectura de todos
cionados con la arquitectura del ordenador. En una agru- los valores de columna de una fila, dado su valor de cla-
pacién las filas de tablas diferentes se almacenan juntas ve principal. Para una tabla en montículo se.requerirla un
en el mismo bloque según algunas columnas comunes. examen del Índice seguido por un acceso a tabla median-
Por ejemplo, una tabla de departamento y una tabla de te identificador de fila. Para una tabla organizada con
empleados se podrían agrupar de fonna que cada fila en índices solamente es necesario el examen del Índice.
la tabla departamento se almacene junto con todas las Los índices secundarios sobre columnas que no sean
filas de los empleados que trabajan en ese depanamen- clave de una tabla organizada con índices son distintos
10.Los valores de la clave principal o clave externa se. de los índices en una tabla en montículo normal. En una
utilizan para determinar la ubicación de almacenamíen- tabla en montfculo cada fila posee un identificador de
io. Esta organización mejora el rendimiento cuando las fila fijó que no cambia. Sin embargo, un árbol B se reor-
dos tablas están combinadas pero sin un aumento de ganiza al crecer o disminuir cuando se insertan o borran
espacio de un esquema desnormalizado puesto que los las entradas, y no hay garantía de que una fila penna-
valores en la tabla de departarnento no están repetidos nczca en una ubicación dentro de una tabla organizada
para cada empleado. Como compromiso, una consulta con índices. Por ello, un Índice secundario en una tabla
que involucra solamente' la tabla departamento puede organizada con índices no contiene identificadores de
tener que involucrar un número sustancialmente mas fila normales, sino identificadores téglcos de fila. Un
grande de.bloques qUe si la' tabla se almacenara sola. identificador lógico de lila se compone de dos partes; un
La organización en agrupación implica que una fila identificador de tila física correspondiente a donde la fila
pertenece a un lugar especíñco: por 'ejemplo, una nue- estaba cuando se creó el índice o la última reconsuuc-
va fila de empleado 'se debe insertar con las otras filas ción y' un valor para la clave única. El identificador de
para el mismo departamento, Por consiguiente. es óbli- fila física se conoce como una «suposición», puesto que
gatorio un índice en la columna de agrupación. Una sería incorrecto si la fila se ha trasladado. En este caso,
organización alternativa es una agrupación asociativa. la otra parte' del identificador lógico de fila. el valor de
Aquí; Oracle calcula la localización de una fila apli- la clave para la fila, se utiliza para .accedér a la misma;
cando una función asociativa al valor para la columna sin embargo. este acceso es más lento que si la suposi-
de agrupación. La función asociativa asigna la fila a un ción hubiera sido correcta, puesto que involucra un reco-
bloque específico en la agrupación asociativa. Puesto rrido del árbol B para la tabla-organizada con índices
que no es necesario el recorrido del índice para acceder desde la raíz hasta los nodos hoja. incurriendo poten-
auna fila según su valor de columna de agrupación, esta cialrnentc en varias operaciones E/S de disco. Sin embar-
organización puede ahorrar cantidades significativas de go, si una tabla es altamente volátil y es probable que un
E/S a disco. Sin embargo, el número de cajones aso- buen porcentaje de suposiciones sean incorrectas, pue-
ciativos y otros parámetros de almacenamiento se deben de ser mejor crear un índice secundario con solamente
establecer cuidadosamente para evitar problemas de ren- valores clave. puesto LJueel uso de una suposición inco-
dimiento debido a demasiadas colisiones o malgasto de rrecta puede producir una E/S a disco malgastada.
espacio debido a cajones asociativos vacíos.
La organización según agrupación asociativa y según
agrupación normal se puede aplicar a una única tabla. El
25.3.5'. índices
almacenamiento de una tabla como una agrupación ase- Oracle soporta varios tipos distintos de índices. El tipo
ciativacon la columna de.la clave principal corno la cla- más comúnmente utilizado es un índice de árbol B,
ve de la agrupación puede permitir un acceso basado en creado en una °
varias columnas. (Nota: En la tcrmi-
615
7. FUNDAMENTOS DE BASES DE DATOS
nología de Oracle, como también en varios' otros siste- mapas de bits alineados (Byre-Aligned Bitmap Com-
mas de bases de datos, un índice de árbol B es lo que se pression, BBC). Esencialmente, una sección .del mapa
denomina un índice dé árbol 8+ en el Capítulo 12.) Las de bits donde la distancia entre dos unos consecutivos es
entradas de los índices tienen el siguiente formato: para suficientemente pequeña se almacena como mapas de
un índice en las columnas cot., coí, y coi); cada fila en bits. Si la distancia entre dos unos es suficientemente
la tabla en donde al menos una columna tenga un valor grande (esto es, hay un número suficiente de ceros entre
no nulo resultaría en la entrada de índice ellos) se almacena el número de ceros.
Los índices de mapas de bits permiten varios índi-
<col] > < col, > < col, > < id-fila > ces en la misma tabla para combinarse en la misma ruta
de acceso si hay varias condiciones sobre las columnas
donde < cot, > denota el valor para la columna i e < id- 'indexadas en la cláusula where de una consulta. Por
fua > es la identificador de fila para la fila. Oracle pue- ejemplo, para la condición
de opcionalmente comprimir el prefijo de la entrada para
ahorrar espacio. Por ejemplo, si hay muchas combina- (caí, == 1 or col] == 2J and coí; > 5 and col, < > 10
ciones repetidas de valores < col, > < col, >, la repre-
Oracle podría calcular las filas que coinciden con la con-
sentación de cada prefijo < col, > < col! > distinto se
dición ejecutando operaciones booleanas sobre los
puede compartir entre las entradas que tienen esa com-
mapa's de bits a partir los mapas de bits de índices sobre
binación de valores, en lugar de almacenarlo explícita-
las tres columnas. En este case, estas operaciones se
mente para cada entrada. La compresión de prefijos pue-
de llevar a ahorros de espacio sustanciales. realizarían para cada índice:
• Para el índice en col., se realizaría la disyunción
25.3.6. Índices de mapas de bits de los valores de clave 1 y 2.
Los índices de nUipas de bits (descritos en el Apartado Para el índice en col2, todos los rnapas de bits para
12.9.4) utilizan una representación de mapa de bits para los valores de la clave> 5 se mezclarían en una
entradas de índice que pueden llevar a un ahorro sus- operación que corresponde a una disyunción.
tancial de espacio (y, por consiguiente, ahorro de E/S a • Para el 'índice en cot ; se obtendrían los mapas de
disco), cuando la columna indexada tiene un número bits para los valores 10 y nuU. Entonces, se apli-
moderado de valores distintos. Los índices de mapas de caría, una conjunción sobre los resultados de los
bits en Oracle utilizan la misma clase de estructura de dos primeros índices, seguido por dos operaciones
árbol B para almacenar las entradas que un índice nor- menos booleanas de los mapas de bits para los
mal. Sin embargo, donde un índice normal en una colum- valores 10 y null para col'»
na tuviera entradasde la fonna < col] > < id~fi{(l>, una
entrada de índice de mapa de bits tendría la forma Todas las operaciones se realizan directamente sobre la
representación comprimida de los mapas de bits (no es
< coi, > < id-füainiciat > < id-filafi1l{l1 » necesaria la descompresión} y el mapa de bits resultan-
-c mapabirscomprímido >. te (comprimido) representa las filas que cumplen todas
las condiciones lógicas.
El mapa de bits conceptualmente representa el espacio La capacidad de utilizar las operaciones booleanas
de todas las filas posibles en la tabla entre los, identifi- para combinar varios índices no está limitada a los índi-
cadores de la fila inicial y final. El número de tales filas ces de mapas de bits. Oracle puede convertir identifi-
posibles en un bloque depende de' cuántas de ellas se cadores de filas a la representación de mapa de bits com-
pueden alojar en un bloque, lo cual va en [unción del primidos, por lo.que se puede utilizar un índice de árbol
número de columnas en la tabla y sus tipos de datos. B normal en cualquier lugar de un 'árbol binario u ope-
Cada bit en el mapa de bits representa una fila posible ración de mapa de bits simplemente poniendo un ope-
en un bloque. Si el valor de la columna de esa fila es el rador id-fila-a-mapa-de-bits en la parte superior del 'acce-
de la entrada de índice, el bit se establece a 1. Sí la fila so a índices del plan de ejecución.
tiene algún otro valor o la fila no existe realmente en la Como regla nemotécnica, los índices de mapas de
tabla. el bit se establece a O (es posible que la fila no bits tienden a ser más eficientes en el espacio que los
exista realmente porque up bloque de la tabla pueda índices de árbol B si el número de valores distintos de
tener un número más pequeño de filas que el número la clave es menor que la mitad del número de filas en
que se calcule como el máximo posible). Si la diferen- una tabla. Por ejemplo, en una tabla con un millón de
cia es grande.el resultado pueden ser .grandes cadenas filas, un índice en una columna con menos de 500.000
de ceros consecutivos en el mapa de bits, pero el algo- valores distintos probablemente sería menor si se crea-
ritmo de compresión.trata dichas cadenas de ceros, por ra como un índice de mapa de bits. Para las columnas
lo que el efecto negativo se limita. con un número muy pequeño de valores distintos (por
El algoritmo de compresión es una-variación de una ejemplo, las columnas que sé refieren a propiedades
técnica de compresión denominada compresión de tales como país, estado; género, estado marital y varios
616
8. CAPITULO 2~ ORACLF.
estados indi<:;adore,s) un índice mapa de bits podría
se construye el índice y las tablas dimensionales se
requerir solamente una pequeña fracción del espacio
deben referir a claves únicas en las tablas dimensiona-
normal de Un índice de árbol B nonnal. Cualquier ven-
les; esto es, una fila.indexada en la tabla de hechos debe
laja en el espacio también puede dar lugar a mejoras en
corresponder a una única fila en cada una de las tablas
el rendimiento en la forma de menos operaciones E/S a de dimensión.
disco cuando se explora el índice.
Oracle puede combinar un índice dé reunión de mapa
de bits en una tabla de hechos con otros 'índices en la
25.3.7. Índices basados en funciones misma tabl'a (tanto si hay índices de reunión o no)
mediante el uso de operadores para las operaciones boo-
Además de crear índices sobre una o varias columnas leanas del mapa-de bits. Por ejemplo, consideremos un
de una tabla, Oracle permite crear Indicés sobre expre-
esquema con una tabla de hechos para las ventas y tablas
siones que involucran unao más columnas, tales como
dimensionales para los clientes, productos y fechas.
col, + cot, * 5. Por ejemplo, la creación de un 'índice Supongamos que una consulta: solicita infonnaciónsobre
sobre la expresión upperínombres, donde upper es una
las ventas a los clientes en un cierto código postal que
función que devuelve la Versión eh mayúsculas de una
compraron productos de una cierta categoría de pro-
cadena y nombre es una columna. es posible realizar
ducto durante un cierto periodo de tiempo. Si existe un
búsquedas independientes de la caja (mayúsculas o
índice de reunión de mapa de bits sobre varias colum-
minúsculas) sobre la columna nombre, Con el fin de
nas donde las, columnas clave son las columnas de la
buscar todas las filas con el nombre «van Gogh» de una
tabla de dimensión restringidas (código postal, catego-
forma eficiente se puede utilizar la condición
ría de producto y fecha), Oracle, puede utilizar el iñdi-
ce de reunión para buscar las filas en la tabla de hechos
upper(nomhre)= 'VAN GOGH'
que coinciden con las condiciones de restricción. Sin
embargo, si existen índices individuales sobre una úni-
en la cláusula where de la Consulta. Oracle entonces
ca columna para las columnas clave (o un subconjunto
casa la condición con la definición de índice y conclu-
de ellas), Oracle puede recuperar los mapas de bits de
ye que se puede utilizar el índice para recuperar todas
las filas de la tabla de hechos que coinciden con cada
las filas que coincidan con «van Gogh» sin considerar
condición individual y utiliza la operación and boo-
las mayúsculas y minúsculas del nombre cuando se
leana para generar un mapa de bits de la tabla de hechos
almacenó en la base de datos. Se puede crear un índice
para aquellas filas que satisfacen todas las condiciones.
basado en función como un mapa de bits o como un
índice de árbol B. Si la consulta contiene condióones sobre algunas colum-
nas de la tabla de, hechos, los Indices.de aquellas colum-
nas-se podrian incluir en la misma ruta de acceso, inclu-
25.3.8. índices de reuníón so si fueran índices normales de árbol B o índices de
dominio (Jos índices de dominio se describen poste-
Un índice de reunión es un índice donde las columnas' riormente en el Apartado 25.3.9).
clave no están en la,tabla que se referencia mediante los,
identificadores de filas en el índice. Oraele soporta los
índices de reunión mapa de bits principalmente para su 25.3.9. Índices de dominio
uso con esquemas en estrella (véase el Apartado 22.4.2).
Oracle permite que las tablas sean indexadas por estruc-
Por ejemplo, si hay una columna para 'los nombres de
turas de índices que no sean propias de Oracle. Esta
los productos en una tabla dé la dimensión productos
característica de extensibilidad del servidor Oraclc per-
se podría utilizar un índice de reunión de mapas de bits
mite a los fabricantes de software desarrollar los lla-
sobre la tabla de hechos con esta columna clave para
mados cartuchos-con funcionalidad para domíniós de
recuperar las filas de la tabla de hechos que correspon-
aplicación específicos, tales como texto, datos espacia-
den a un producto con un nombre específico, aunque el
les, e imágenes, con la funcionalidad de indexado mas
nombre no esté almacenado en la tabla. de hechos. La
allá de la proporcionada por los tipos de índice Oracle
forma en la que las filas en las tablas de hechos y de la
estándar. Para implementar la' lógica para crear, mante-
dimensión correspondientes está basada en una condi-
ner y buscar en el índice, el diseñador de índices debe
ción de reunión se especifica cuando se crea el índice y
asegurar que se adhiere a un protocolo específico en Su
se convierte en parte de los [os rncradatos de índices. interacción con el servidor Oracle.
Cuando se procesa una consulta el optimizador busca-
Un índice de dominio se debe registrar en el diccio-
rá la misma condición de reunión en la cláusula where
nario de datos junto con los operadores que soporta. El
de la consulta con el fin de determinar si es aplicable el
optimizador de Oracle considera los índices de domi-
índice de reunión.
nio como una de las posibles rutas de acceso para una
Oraele permite índices de reunión de mapa de bits
tabla. Oracle permite a las funciones de coste registrar-
para tener más de una columna clave y estas columnas
se con [os operadores de forma que el optimizador pue-
pueden estar en tablas diferentes. En todos los casos las
da comparar el coste del usa del índice de dominio con
condiciones de reunión entre la tabla de hechos donde los de otras rutas de acceso.
9. FUNDAMENTOS DE BAS:ES DE DATOS
Por ejemplo, un índice de dominio para búsquedas 25.3.10.1. División por rangos
de texto avanzadas puede soportar un operador coniains En la división por rangos los, criterios de división son
(contiene). Una vez que se ha registrado este operador, rangos de valores. Este tipo de división está especial-
el índice de dominio se considerará como una ruta de mente indicado para columnas de fechas, en cuyo caso
acceso para una consulta como todas las filas en el mismo rango de fechas, digamos un
día o un mes; pertenecen a la misma partición. En un
select * almacén de daros donde los datos se cargan desdesis-
from empleados temas transaccionales a intervalos regulares, la división
where containstresumen. 'LINUX')
por rangos se puede utilizar para implementar eficien-
donde resumen es una columna de texto en la tabla temente una ventana de datos históricos.
empleados. El índice de dominio se puede almacenaren Cada carga de datos obtiene su nueva propia parti-
un archivo de datos externo o dentro de una tabla Ora- ción, haciendo que el proceso' de carga sea más rápido
ele organizada con índices. Un índice de dominio se pue- y eficiente. El sistema realmente carga los datos en una
de combinar con otros índices (mapa de bits o de árbol tabla separada con la misma definición de columna que
B) en la misma ruta de acceso con la conversión entre en una tabla dividida. Se puede entonces verificar la
la representación de mapa de bits y el identificador de consistencia de los datos, arreglarlos e Indexarlos. Des-
fila y usando operaciones booleanas del mapa de bits. pués de eso el sistema puede hace de la tabla separada
una nueva partición de la tabla partida mediante un sen-
cillo, cambio de los metadatos en el diccionario de datos
25.3,.10. División en particiones (una operación casi instantánea).
Oracle soporta varias clases de división horizontal de Mientras no cambien los metadatos, el proceso de
tablas e índices y esta característica tiene Una función carga no afecta a los datos existentes en la tabla dividi-
principal en la capacidad de Oracle de soportar bases da en ningún caso. No hay necesidad dc realizar ningún
de datos muy grandes; La capacidad de dividir una tabla mantenimiento de los índices existentes C9tI1() parte de
o índice tiene ventajas en muchas 'áreas. la carga. Los datos antiguos se pueden eliminar de una
tabla sencillamente eliminando su partición; esta ope-
La copia de seguridad y recuperación es más sen- ración no afecta al resto de particiones. Además, las con-
cilla y rápida, puesto que se puede realizar sobre sultas en un entorno de almacén de datos frecuentemente;
"lIlI particiones individuales en lugar de sobre toda la contienen condiciones que los restringen a un cierto
~!'~
••'1,
tabla.
Las operaciones de carga en un entorno de alma-
periodo de tiempo, tal como una quincena o mes. Si Se.
uti liza la división de datos por rangos el optimizador de
'. "jo; cén de datos son menos intrusivas: se pueden agre- consulta puede restringir el acceso a los datos de aque-
gar datos a una partición y entonces agregar la llas particiones que son relevantes a la consulta y evi-
partición a una tabla, lo que es una operación ins- tar una exploración de toda Ta tabla.
tantánea. De igual forrna, eliminar una partición
con datos obsoletos desde una tabla es muy. senci- 25.3.10.2. División asociativa
llo en un almacén de dalas que mantenga una ven- En la división asociativa, una función asociativa hace
tana de datos históricos. corresponder filas con divisiones según los valores en
,:i • El.rendirniento de la consulta se mejora sustan- las columnas de, la división. Este tipo dé división resul-
cialmente, puesto que el optimizador puede reco- ta útil principalmente cuando es importante distribuir
nocer que solamente se tiene qu~ acceder a un sub- las tilas equitativamente entre las particiones o cuando
conjunto de las particiones de una tabla con el fin las reuniones por particiones son importantes para el
de resolver I¡;¡.
consulta (poda de particiones). Tam- rendimiento de la-consulta.
bién el optimizador puede reconocer que en una
reunión no es necesario intentar hacer correspon- 25.3.10.3. División compuesta
der todas las tilas en una tabla con todas las filas Enla división compuesta la tabla se divide por rangos,
en la otra, pero que las reuniones se necesitan rea- pero cada panición tiene subpaniciones mediante el
lizar solamente entre pares coincidentes de divi- uso. de división asociativa. Este tipo de división com-
siones (reunión por particiones). bina las ventajas de la división por rangos y la división
asociativa.
Cada fila en una tabla dividida está asociada con una
partición específica. ESta asociación está basada en la
25.3.10.4. "División por listas
columna o columnas de la división que son parle de la
definición de una, tabla dividida. Hay varias formas para En la división por listas los valores asociados con una,
hacer corresponder valores de columna a divisiones, partición panicular están en una lista; Este tipo de divi-
dando lugar a varios tipos de divisiones, cada una con sión es útil si los datos en la columna de división tienen
distintas características: divisiones por rangos, asocia- un conjunto relativamente pequeño de valores discre-
tivas, compuestas y por listas. tos. Por ejemplo, una tabla con una columna provincia
6"
10. CAPiTULO 25 Ol'AC-:IE
se puede partir implícitamente por región geográfica si metadatos.qhi¡ension para especificar cómo se abstraen
c-ada lista de particiones tiene las provincias 'que perte-
los días a meses, los meses a Cuatrimestres, los cuatri-
necen-a Ia misma región.
mestres a 'años y así sucesivamente. De igual forma se
pueden especificar las propiedades jerárquicas relacio-
25.3.11. Vistas materializadas nadas con la geografía, por ejemplo, cómo los distritos
de ventas. se abstraen a regiones. La lógica de la rees-
La caractenstíca de la vista materializada (véase el Apar- critura de la consulta examina estas relaciones puesto
tado' 3.5.1) permite almacenar el resultado de una Con- que permite utilizar una vista materializada para clases
sulta SQL y utilizarlo en un procesamiento posterior. más amplias de consultas.
Además, Oracle mantiene el resultado materializado, El objeto contenedor para una vista materializada es
actualizándolo cuando se actualizan las tablas a las que una tabla, lo que significa que una vista materializada
se hicieron referencia en la consulta. Las vistas mate- se puede indexar, dividir o estar sujeta.a otros contro-
rializadas se utilizan en el almacén de datos para acc- les para mejorar el rendimiento de la consulta.
lerar el procesamiento de la consulta, pero esta tecno- Cuando hay cambios en los datos de las tablas refe-
logía también se utiliza pata la réplica en entornos renciadas en la consulta que define una vista materiali-
distribuidos y móviles.
zada se debe actualizar la vista materializada para reffc-
En el almacén de datos, un uso común de vistas mate- jar dichos cambios. Oracle soporta tanto la actualización
rializadas es, resumir los datos. Por ejemplo, un tipo completa de una vista materializada como una actuali-
común de consulta solicita «la suma dc las ventas de cada zación rápida incremental. En una actualización com-
cuatrimestre durante lbs últimos dos años». El precalcu- pleta Oracle vuelve a calcular la vista materializada des-
lo de los resultados, o algún resultado parcial. de dicha de Cero, lo cual puede ser la mejor opción si las tablas
consulta puede acelerar drásticamente el procesamiento subyacentes han tenido cambios significativos, pcr ejem-
de la consulta comparado a calcularlo desde cero con la plo, debidos a una carga masiva. En una-actualización
agregación de todos los registros de ventas por detalle. incremental Oracle actualiza la vista utilizando regis-
Oracle soporta' reescrituras automáticas de las con- tros que fueron cambiados en las tablas subyacentes: la
sultas que' aprovechan cualquier vista materializada útil actualización de la vista es inmediata, esto es, se eje-
cuandose.resuelve una consulta. La reescritura consis- cuta como parte de la transacción que cambió las tablas
te en cambiar la consulta para utilizar la vista materia- subyacentes. La actualización incremental puede ser
lizada en lugar de las tablas originales en la consulta. mejor si el número de filas que se han cambiado es
Además, la reescritura puede agregar reuniones adicio- pequeño. Hay algunas restricciones sobre las clases de
nales o procesamiento de 'agregación si SOn necesarias consultas según las que una vista materializada se pue-
para obtener el resultado correcto. Por ejemplo, si una de actualizar de forma incremental (y otras que indican
consulta necesita las ventas por cuatrimestre, la rees- si una vista materializada siquiera se puede crear).
critura puede aprovechar una vista que materializa las Una vista materializada es similar a un índice en el
ventas por mes, añadiendo agregación adicional para sentido que, aunque puede mejorar el rendimiento de la
abstraer los meses a cuatrimestres. Oracle tiene un tipo consulta, usa espacio, y su creación y inantenimiento con-
de objeto de metadaros denominado dimension que per- sume recursos. Para ayudar a resolver este compromiso
mite las relaciones jerárquicas en las tablas a definir. Oracle proporciona un paquete que puede aconsejar al
Por ejemplo, una tabla de la dimensión temporal en un usuario de las vistas materializadas más efectivas en el
esquema en estrella Oraele puededefinir un objeto de coste, dada una carga de trabajo particular como-entrada.
Oracle soporta una gran variedad de técnicas de proce-
mación sobre los bloques que forman la tabla del
samiento en su motor de procesamiento de consultas. mapa de extensión y explorando esos bloques.
Algunas de las más importantes se describen aquí bre-
vemente. • Exploración de índices. El procesador crea una
clave de comienzo y/o finalización a partir de las
condiciones en la consulta y la utiliza para explo-
25.4.1. Métodos de ejecución rar una parte relevante del índice. Si hay colum-
Los datos se pueden acceder mediante una serie de nas que se tienen que recuperar, que no son parte
métodos' de acceso: del índice, la exploración del índice sería seguida
por un acceso a la tabla mediante el índice del iden-
tificador de fila. Si no hay disponible ninguna cla-
Exploración de tabla completa. El procesador de
ve de inicio o parada la exploración sería una
la consulta explora toda la tabla y obtiene infor- exploración de índice completa.
619
11. FUNDAMENTOS DE BASES DE OATOS
Exploración rápida completa de Índices. El pro- 25.4.2. Optimización
cesador explora las extensiones.de la misma for- En el Capítulo 14 se ha discutido el tema general de la
ma que la extensión de tabla en una exploración optimización de la consulta. Aquí discutimos la opti-
de tabla completa. Si el Índice contiene todas las mización en el contexto de Orácle.
columnas que se necesitan en el Índice y no hay
buenas claves de inicio y parada que puedan redu- 25.4~2.1.Transformaciones de consultas
cir significativamente esa porción del índice que
se exploraría en una exploración de índices nor- Oracle realiza la optimización de consultas en varios
mal. este método puede ser la forma más rápida de pasos. La mayoría de las técnicas relacionadas con las
acceder a los datos. Esto es porque la exploración rransformaciones.de consultasy reescritura tienen lugar
rápida completa aprovecha de forma completa la antes de la selección de la ruta de acceso, pero Oracle
EIS de disco de varios bloques. Sin embargo. a también soporta varios tipos de transformaciones de
diferencia de' una exploración completa normal, consultas basadas en el costo que generan un plan com-
que recorre los bloques hoja del índice en orden, pleto y devuelven una estimación del costo para-la ver-
una exploración rápida completa no garantiza que sión estándar de la consulta y otra que,ha sufrido trans-
la salida preserve el orden del indice. formaciones avanzadas. No todas las técnicas de
transformación de consultas tienen garantizado su bene-
• Reunión de Índices. Si una consulta necesita ficio para cada consulta, pero mediante la generación
solamente un pequeño subconjunto de columnas de una estimación del coste para el mejor plan sin y con
de una tabla ancha. pero ningún 'índice contiene la transformación aplicada. Oracle puede adoptar una
todas estas columnas. el procesador puede utilizar decisión inteligente.
una reunión de índices para generar la información Algunos de los tipos principales de transformaciones
relevante sin acceder a la tabla, reuniendo varios y reescrituras soportados por Oracle son los siguientes:
índices que contienen en conjunto las columnas
necesarias. Ejecuta las reuniones como reunión por • Mezcla de vistas. La referencia deja vista en una
asociación sobre los identificadores de filas desde consulta es reemplazada por la definición de la vis-
los distintos índices. ta. Esta transformación no es aplicable a todas las
Acceso a agrupaciones y agrupaciones asocia- vistas.
das. El procesador accede a los datos utilizando la Mezcla compleja de vistas. Oracle ofrece esta
clave de 'a&rupaciói1. característica para ciertas clases de' vistas que no
estén sujetas a la mezcla normal de vistas puesto
Oracle.tiene diversas formas de combinar informa- que tienen un group by osejeet distinct en ladefi-
ción desde varios índices en una única ruta de acceso. nición de la vista. Si dicha vista se combina con
Esta posibilidad permite varias condiciones en la cláu- otras tablas, Oracle puede conmutar las reuniones
sula where que se pueden utilizar conjuntamente para y la operación de ordenación utilizada por group
calcular el conjunto de resultados de la forma más efi- by o distinct.
cientemente posible. La funcionalidad incluye la capa- • Subconsultas planas. Oracle tiene una serie de
cidad de ejecutar las operaciones booleanas conjunción. transformaciones que convierten varias. clases de
disyunción y diferencia sobre mapas de bits que repre- subconsultas en reuniones, semirreunioúes o anti-
sentan los identificadores de filas. Hay también opera- rreuniones.
dores que hacen corresponder una lista de identificado-
res de filas con mapas de bits y viceversa, lo que permite Reescritura' de vistas materializadas; Oracle tie-
que los índices de árbol B normales y los índices de ne la capacidad de reescribir una consulta auto-
mapas de bits utilicen la misma ruta de acceso. Además, máticamente para aprovechar las vistas materia-
para muchas consultas que involucran count (*) en lizadas. 'Si alguna parte de la consulta se puede
selecciones sobre una tabla el resultado se puede cal- casar con una vista materializada existente. Ora-
cular simplemente contando los bits activados en el ele puede remplazar esta parte de la consulta con
mapa de bits generado mediante la aplicación de las una referencia a la tabla en la cual la vista está
condiciones de la cláusula where sin acceder a la tabla. materializada. Si es necesario, Grade agrega con-
Oracle soporta varios tipos de-reuniones en el motor diciones de reunión u operaciones group by para
de ejecución: reuniones internas, externas, semireunio- preservar la semántica de la consulta. Si son apli-
nes y antirreuníones (una antirreunión en Oracle devuel- cables varias vistas materializadas. Oracle reco-
ve las filas de la parte izquierda de la entrada que no ge la que reduce la mayor cantidad de datos que
coinciden con ninguna fila en la parte derecha de la entra- se tienen que procesar. Además. Oracle somete la
da; esta operación-sedenominaentisemirreunión en otros consulta reescrita y la versión original al proceso
libros). Evalúa cada tipo de reunión mediante uno de los completo de optimización produciendo un plan de
tres métodos: reunión por asociación, reunión por mez- ejecución y un coste asociado estimado para cada
cla-ordenación o reunión en bucle. anidado. una. Oracle entonces decide si ejecutar la versión
620
12. CAPITlJLO 25 ORACLE,
original o la reescrita de la consulta según la esti- litar la recogida de las estadísticas del optimizador, Ora-
mación del coste. de puede supervisar la actividad de la modificación
Transformación en estrella. OracIe soporta una sobre tablas y sigue la pista de aquellas tablas que han
técnica para evaluar las consultas en esquemas en sido objeto de suficientes cambios como para que pue-
estrella, conocidas como transformación en estre- da ser apropiado un nuevo cálculo de las estadísticas.
lla. Cuando una consulta contiene una reunión de Oracle también sigue las columnas que se utilizan en
una' tabla de hechos con tablas dimensionales y las cláusulas where de las consultas, 10 que hace que
selecciones sobre los atributos de las tablas dimen- sean candidatas potenciales para la creación del histo-
sionales.Ia consulta se transfonnaborrando la con- grama. Con una única orden un usuario puede decir a
dición de la reunión entre la tabla de hechos y las Oracle ,que actualice las estadísticas para aquellas tablas
tablas dimensionales y remplazando la condición que han sido suficientemente cambiadas. Oracle utiliza
de selección en cada tabla dimensional por una un muestreo para acelerar el proceso de recoger la nue-
subconsulta del formulario: va estadística y elige de forma automática el menor por-
centaje de la muestra. que sea adecuado. También deter-
tabla_de _ hechos.th, in mina si la distribución de las columnas marcadas merece
(select cp Irom tabla _dimensional¡ la creación de histogramas: si la distribución está cerca
where <condiciones sobre de ser uniforme Oracle utiliza una representación más
tabla _dimensional, » sencilla de la estadística de columnas.
Oracle utiliza el coste de CPU y E/S en disco en el
Se genera dicha subconsulta para cada 'tabla dimen-
modelo de coste en el optimizador. Pata equilibrar los
sional que tiene algún predicado restrictivo. Si la
dos componentes almacena las,medidas sobre la velo-
dimensión tiene un esquema en copo de nieve (véa-
cidad de CPU y rendimiento de E/S de disco como par-
se el Apartado 22.4), la subconsulta contendrá una
te de la estadística del optimizador; El paquete de Ora-
reunión de las rablas aplicables que forman la
ele para recoger la estadística del optimizador calcula
dimensión.
estas medidas.
Oracle utiliza los valares que son devueltos des-
Para consultas que involucran un número no trivial
de ceda.subconsulta para probar un índice sobre la
de reuniones. el espacio de búsqueda es un tema para
columna de la tabla de hechos correspondiente,
el optimizador de consultas. Orac1e soluciona este tema
obteniendo un mapa de bits como resultado. Los
de, varias fonnas. El optimizador genera un orden ini-
mapas de bits generados desde distintas subcon-
cial de la reunión y entonces decide sobre los mejores
sultasse combinan con una operación and de
métodos de la reunión y rutas de acceso.para ese orden
mapas de bits. El mapa de bits resultante se pue-
de la reunión. Entonces cambia el orden de las tablas y
de utilizar pata acceder a las 'tilas de las tablas de
determina los mejores métodos de reunión y rutasde
hechos coincidentes. Por ello, solamente se acce-
acceso para el nuevo orden y así sucesivamente, guar-
derá a las filas en la tabla de hechos que coinciden
dando el mejor plan que 'se ha encontrado hasta enton-
simultáneamente en las condiciones de las dimen-
ces. Oracle mantiene pequeña la optimizacióIí si el
siones restringidas.
número de (os distintos órdenes de la reunión que se
Tanto la decisión de si el uso de una subcon-
han considerado es tan grande que el tiempo gastado en
sulta para una dimensión particular es ventajoso y
el optimizador puede ser grande comparado con el que
la decisión de-si la consulta reeserita es mejor que
se gastaría para ejecutar el mejor plan encontrado has-
la original están basadas en la estimación de cos-
ta entonces. Puesto que este corte depende del coste esti-
te del optimizador.
mado para el mejor plan encontrado hasta entonces, es
importante encontrar un buen plan pronto. de forma que
25.4.2.2.Selección de la ruta de acceso
el optimizador se pueda parar después de un pequeño
Oracle tiene un optimizador basado en el casto que número de órdenes de la reunión. resultando un mejor
determina el orden de la reunión, métodos de reunión y tiempo de respuesta. Oracle utiliza varias heurísticas
rutasde acceso. Cada operación que el optimizador con- para el orden inicial para. aumentar la probabilidad de
sidera tiene una función de coste asociada y el optimi- que el primer orden de reunión se considere bueno.
zador intenta generar la combinación de operaciones Por cada orden de reunión que se considera, el opti-
que tiene' el coste global menor. mizador puede hacer pasadas adicionales por las tablas
Para estimar-el coste de una operación, el optimiza- para decidir los métodos de reunión y las rutas.de acce-
dor considera las estadísticas que.se han calculado para so. Tales pasadas adicionales capturarían efectos glo-
losobjetos del esquema tales como tablas e índices. La bales colaterales específicos sobre la selección de la ruta
estadística contiene información sobre el tamaño del de acceso. Por ejemplo. una combinación específica de
'objeto, la cardinalidad. la distribución de datos de las métodos de reunión y rutas de' acceso pueden eliminar
columnas de la tabla y cosas similares. Para la estadís- la necesidad de ejecutar una ordenaciÓn orden by. Pues-
tica de columnas, OracIe soporta histogramas equili- to que tal efecto lateral global puede.no ser obvio cuan-
bradosen altura e histogramas de frecuencia. Para faci- do se consideran Localmente los costes de los distintos
621
13. FUNDA.MENTOS DE BASES DE DATOS
métodos de reunión y de rutas de acceso, se utiliza una sos y envía: una copia de la: tabla pequeña a cada pro-
pasada separada que capture un erecto colateral espe- -ccso, la cual entonces reúne su trozo.con la-tabla menor.
cffico para encontrar un posibleplan de ejecución con Si ambas tablas son grandes, sería próhibitivamente cos-
un mejor coste conjunto. toso enviar una de ellas a rodoslos procesos. En ese
caso Oracle logra el paralelismo mediante la: división
25.4.2.3. Poda de particiones de los datos entre los procesos mediante la asociación
de los valores de-las columnas dc la reunión (el méto-
Para tablas divididas el optimizador intenta ajustar las
do de reunión por asociación dividida del Apartado
condiciones en la cláusula where de una consulta con
20.5.2.1). Cada tabla se explora en paralelo mediante-
el criterio de división de la tabla con el fin de evitar acce-
un conjunto de procesos y cada fila en la salida se pasa
der a:particiones que no son necesarias para el resulta-
a un proceso de, un conjunto de procesos 'que van a eje-
do. Por ejemplo, si una tabla se divide por el rango de
cutar la reunión. El proceso que obtiene la fila sedeter-
fechas y la consulta se restringe a datos entre dos fechas
mina mediante una función de asociación sobre los valo-
específicas, el optimizador determina las particiones-que
res de .la columna de reunión. Por ello, cada proceso de
contienen los daros entre las fechas específicas y ase-
reunión obtiene solamente las filas que podrían poten-
gura que solamente se accede a dichas particiones. Este
cialmente coincidir y filas correspondientes no podrían
escenario es muy común y la aceleración puede ser dra-
ir a parar .a diferentes procesos.
mática si solamente es necesario un pequeño subcon-
Orade organiza eh paralelo las operaciones de orde-
junto de particiones.
nacióri mediante Jos rangos de valores de la columna en
la cual se ejecuta la ordenación (esto es, usando la orde-
25.4.3. Ejecución en paralelo nación de división por rangos del Apartado 20.5.).
Oraele permite ejecutar en paralelo una única instruc- A cada proceso que participa en la ordenación se le en-
ción SQL mediante la división del trabajo entre varios vían filas con los valores en este rango y ordena las filas
procesos en una computadora multiprocesadora. Esta en su rango. Para maximizar las ventajas del paralelis-
característica es especialmente útil para operaciones mo las filas se tienen que dividir lo más equitativamente
intensivas en cómputo que de.otra forma se ejecutarían posible entre los procesos en paralelo y entonces surge
en un tiempo inaceptablemente largo. Ejemplos repre- el problema de determinar las fronteras de rango que
senrativos son las consultas de apoyo para la toma de generan una buena distribución. Oracfe soluciona el pro-
decisiones que necesitan procesar grandes cantidades blema mediante un muestreo dinámico de un subcon-
junto de las titas en la entrada a la ordenación antes de
.,. de datos. cargas de datos en un almacén de datos y
creación o reconstrucción de Índices. decidir las fronteras del rango.
Con el fin de lograr una buena aceleración median-
te el paralelismo es importante que el trabajo involu-
25.4.3.1. Estructura del proceso
crado en la ejecución de la instrucción se divida en grá- Lbs procesos involucrados en la ejecución en paralelo
nulos que se pueden procesar de forma independiente de 11Ii'a instrucción SQLconsistén en un proceso. coor-
mediante tos distintos procesadores en paralelo. Depen- dinador y una serie de procesos servidores en paralelo.
diendo del tipo de'operación Oracle tiene diversas for- El coordinador es responsable de asignar trabajos a los
mas de dividir el trabajo. servidores en paralelo y de recoger y devolver los datos
Para operaciones que acceden a objetos base Xtablas a los procesos del usuario que enviaron la instrucción.
e índices) Oracle puede dividir el trabajo mediante tro- El grado de paralelismo es el número de procesos ser-
zos Horizontalesde datos. Para alguna s operaciones tales vidores en paralelo que se asignan para ejecutar una
como una exploración completa de una tabla, cada uno operación primitiva como parte de la instrucción. El gra-
de dichos trozos puede ser un rango de bloques (cada do de paralelismo se determina mediante el optimiza-
proceso de consulta en paralelo explora la tabla desde dor. pero se puede reducir dinámicamente si la:carga en
el bloque a:1comienzo del rango hasrael bloque al final). el sistema aumenta.
Para otras operaciones en una tabla dividida. come la Los-servidores en paralelo operan sobre un modelo
actualización y borrado, el trozo podría ser una parti- productor/consumidor. Cuando es necesario una secuen-
ción. Para inserciones eh una tabla no dividida los datos cia de operaciones para procesar una instrucción. el
a insertar se dividen de forma aleatoria entre los proce- conjunto productor de servidores ejecuta la primera ope-
sos en paralelo. ración y pasa los datos resultantes al conjunto de con-
Las reuniones se pueden realizar en paralelo de dis- sumidores. Por ejemplo, si una exploración de tabla
tintas formas. Una forma es dividir una de las entradas completa es seguida por una ordenación y el grado de
a la reunión entre procesos paralelos y permitir que cada paralelismo es 12, habría 12 servidores productores que
proceso reúna su trozo con la otra entrada de la reunión; ejecutan la exploración de la tabla y pasan el resultado
éste es el método de reunión con fragmentos, y réplicas a 12 servidores consumidores que ejecutan la ordena-
del Apartado 20.5.2. Por ejemplo, si una tabla grande ción. Si es necesaria una operación posterior, como otra
se reúne con una pequeña mediante una reunión por aso- ordenación, las funciones de los dos conjuntos de ser-
elación, Oracle divide' la tabla grande entre los proce- vidores se cambian. Los servidores, que originalmente
622
14. CAPITULO 25 0RACLE
ejecutaban la exploración de la tabla adoptan la función Para sistemas sin compartimiento el coste para acce-
de consumidores de la salida producida por la primera der a los datos en el disco no es uniforme entre los pro-
ordenación y lo utilizan para ejecutar la segunda orde- cesos. Un proceso que se ejecuta en un nodo qlle tiene
nación. Por ello se realizan una secuencia de operacio- acceso directo a un dispositivo puede procesar los datos
nes pasando los datos entre dos conjuntos de servido- sobre ese dispositivo más rápidamente que un proceso
res que alternan sus funciones como productores S que tiene que recuperar los datos a través de la red.
consumidores. Los servidores se comunican entre sí Oraele utiliza el conocimiento sobre la añnidad dispo-
mediante las memorias' intermedias sobre hardware de sitivo a nodo y dispositivo a proceso (esto es, la capa-
memoria compartida y mediante las conexiones de red cidad de acceder a los dispositivos directamente) cuan-
de alta velocidad sobre configuraciones MPP (sin com- do distribuye el trabajo entre servidores en ejecución
partimiento) y sistemas agrupados (discos compartidos). paralela.
"c., '." Jt<;OJlCUllBENCIA y RECUPERACiÓN
Orácle soporta técnicas de control de concurrencia y de retroceso es lo suñciénremente grande, Oracte puede
recuperación que proporcionan una Serie de caracterís- devolver un resultado consistente de la consulta incluso
ticas útiles. si los datos se han modificado varias veces desde que
comenzara la ejecución de la consulta. Sie! bloque con
25.5.1.Control de concurrencia el SCN deseado ya no existe en el segmento de retroce-
so, la consulta devolverá un error. Habría una indicación
El control de concurrencia multiversíón de Oracle difie- de que el segmento de retroceso no se ha dimensionado
re de los mecanismos de Concurrencia utilizados por la adecuadamente, dada la actividad del sistema.
mayoría de los fabricantes de bases de datos. Para las En el modelo de concurrencia de' Oracle las opera-
consultas de sólo lectura se proporcionan instantáneas ciones de lectura no bloquean las operaciones de escri-
consistentes en lectura, que son vistas de la 'base de datos tura y las operaciones de escritura no bloquean las ope-
tal como existía en un cierto momento, conteniendo raciones de lectura. una propiedad que permite un alto
todas las actualizaciones que se comprometieron hasta grado de concurrencia. -En particular, el esquema per-
ese momento y no el resto. Por ello no se utilizan lQS mite consultas largas (por ejemplo consultas de infor-
bloqueos de lectura y las consultas de sólo lectura no mes) para ejecutar en un Sistema con una gran cantidad
interfieren con otra actividad de la base de datos en tér- de actividad transaccional. Esta clase de escenario es
minos de bloqueos (esto es básicamente el protocolo de normalmente problemático para sistemas de bases de
bloqueo multiversión en dos' fases descrito en el Apar- datos donde las consultas utilizan bloqueos de lectura,
tado 16.5.2). puesto que la.consulta puede, fallar al adquirirlos o blo-
Oraclesoporta la consistencia de lectura en un nivel quear grandes cantidades de datos por mucho tiempo
de instrucción y de transacción. Al comienzo-de la eje- evitando, por consiguiente. la actividad transaccional
cución de una instrucción o transacción (dependiendo de los datos y reduciendo la concurrencia (una alterna-
del nivel de consistencía que se utilice) Oracle deter- tiva que se utiliza en algunos sistemas es utilizar un gra-
mina el número de cambio del sistema'(System Chan- do inferior de consistencia, tal como la consistencia en
ge Number, SCN) actual. El SCN esencialmente actúa grado dos, pero eso podría producir resultados incon-
como una marca temporal donde el tiempo 'se mide en sistentes eh la consulta).
términos de compromisos de la base de datos en lugar El modelo de concurrencia de Orecle se utiliza como
del tiempo de reloj. base para la característica Flashback Query. Esta carac-
Si en el curso de una consulta se encuentra que un terística permite a un usuario establecer un cierto núme-
bloque de datos tiene un SCN mayor que el que está sien- ro SCN o tiempo de reloj en su sesión y ejecutar con-
do asociado con la consulta, es evidente que se ha modi- sultas sobre los datos que existían en esa fecha (supuesto
ficado el bloque de datos después del SCN de la con- que los datos todavía existían en el segmento de retro-
sulta original mediante alguna aira transacción y puede cese]. Normalmente en un sistema de bases de datos.
ano haberse comprometido. Por ello los datos en el blo- una vez que se ha realizado el cambio no hay forma de
que no se pueden incluir en una vista consistente de la retroceder al estado anterior de los datos a menos que
base de datos como existía a la hora del SCN de la con- se realicen restauraciones desde copias dc seguridad.
sulta. En su lugar, se debe utilizar una versión anterior Sin embargo, la recuperación de una base de datos muy
de los datos en el bloque; específicamente aquel que ten- grande puede ser muy costosa, especialmente si el obje-
ga el SCN mayor que no exceda el SCN de la consulta. tivo es solamente recuperar algunos datos que han sido
Orac1erecupera la versión de los datos desde el segmento borrados inadvertidamente por Un usuario. La caracte-
de retroceso (los segmentos de retroceso se describen en rística Flashback Que¡-)' proporciona un mecanismo
el Apartado 25.5.2). Por ello, supuesto que el segmento mucho más sencillo para tratar los errores del usuario.
623