E$IUDIODI                                    ..   -                                                                     CA...
..:~                                                                                                                      ...
1 ,         FUNDAMENTOS   DE BASES DE DATOS         ele warehouse Builder soporta los esquemas 3FN y en             ciones...
caerrecc   25   ORACU:      ción y es útil para combinar datos nuevos con anti-           de Oraele para los procedimiento...
FUNDAMENTOS   DE BASES   DE DATOS                                                                                         ...
CAPiTULO   25   ORACLE fila en una tabla no esté basada cn los valores conteni-             un valor de clave principal co...
FUNDAMENTOS     DE BASES   DE DATOSnología de Oracle, como también en varios otros siste-           mapas de bits alineado...
CAPITULO 2~   ORACLF.  estados indi<:;adore,s) un índice mapa de bits podría                                              ...
FUNDAMENTOS   DE BAS:ES DE DATOS               Por ejemplo, un índice de dominio para búsquedas           25.3.10.1. Divis...
CAPiTULO   25   OlAC-:IE se puede partir implícitamente por región geográfica si             metadatos.qhi¡ension    para ...
FUNDAMENTOS   DE BASES DE OATOS     Exploración rápida completa de Índices. El pro-              25.4.2. Optimización     ...
CAPITlJLO   25   ORACLE,      original o la reescrita de la consulta según la esti-           litar la recogida de las est...
FUNDA.MENTOS   DE BASES   DE DATOS      métodos de reunión y de rutas de acceso, se utiliza una            sos y envía: un...
CAPITULO   25   0RACLE ejecutaban la exploración de la tabla adoptan la función              Para sistemas sin compartimie...
Oracle
Oracle
Oracle
Oracle
Oracle
Upcoming SlideShare
Loading in …5
×

Oracle

1,035 views
925 views

Published on

0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
1,035
On SlideShare
0
From Embeds
0
Number of Embeds
7
Actions
Shares
0
Downloads
1
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Oracle

  1. 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. 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. IIOracle proporciona una serie de herram icntas para el cacioncs. Soporta varias técnicas de modelado talesdiseñ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 único25,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 basesele están incluidas en Oracle Internet Developrnenr Sui- de datos, formularios, clases Java, archivos XML y otroste. 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 deparael 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 deen 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. 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 amplieoi.ll rango de funciones analíticas, incluyendo cubos, datos multidimensionales. Soporta una amplia variedadItil 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. 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 yOracle tiene soporte extensivo para constructores rela- varias opciones pata el momento y forma en que secionales 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 talespales PL/SQL y Java. PL/SQL fue el lenguaje original como las instrucciones create, alter o drop. 613
  5. 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 queln • Espacios de tablas creados para almacenar los datos contienen información para deshacer los cambios de usuario. Aunque los datos de usuario se puedenO 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. 6. CAPiTULO 25 ORACLE fila en una tabla no esté basada cn los valores conteni- un valor de clave principal con una unica BS 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 filatan los datos o la sesión de usuario. Los datos son pri- indexada, una-tabla organizada con índices reemplaza elvados a la sesión y se eliminan automáticamente al fina! identificador de tila con los valores .de la columna parade 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 todoscionados 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 unen 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 conempleados 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 seanfilas de los empleados que trabajan en ese depanamen- clave de una tabla organizada con índices son distintos10.Los valores de la clave principal o clave externa se. de los índices en una tabla en montículo normal. En unautilizan para determinar la ubicación de almacenamíen- tabla en montfculo cada fila posee un identificador deio. 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 borranespacio 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 organizadapara cada empleado. Como compromiso, una consulta con índices. Por ello, un Índice secundario en una tablaque involucra solamente la tabla departamento puede organizada con índices no contiene identificadores detener que involucrar un número sustancialmente mas fila normales, sino identificadores téglcos de fila. Ungrande 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 filapertenece 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 depara el mismo departamento, Por consiguiente. es óbli- fila física se conoce como una «suposición», puesto quegatorio 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 deAquí; 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 índicesque 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 unE/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 solamenteestablecer 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únagrupación normal se puede aplicar a una única tabla. El 25.3.5. índicesalmacenamiento de una tabla como una agrupación ase- Oracle soporta varios tipos distintos de índices. El tipociativacon 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. 7. FUNDAMENTOS DE BASES DE DATOSnologí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 mapadenomina un índice dé árbol 8+ en el Capítulo 12.) Las de bits donde la distancia entre dos unos consecutivos esentradas de los índices tienen el siguiente formato: para suficientemente pequeña se almacena como mapas deun índice en las columnas cot., coí, y coi); cada fila en bits. Si la distancia entre dos unos es suficientementela tabla en donde al menos una columna tenga un valor grande (esto es, hay un número suficiente de ceros entreno 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 columnasdonde < cot, > denota el valor para la columna i e < id- indexadas en la cláusula where de una consulta. Porfua > es la identificador de fila para la fila. Oracle pue- ejemplo, para la condiciónde opcionalmente comprimir el prefijo de la entrada paraahorrar espacio. Por ejemplo, si hay muchas combina- (caí, == 1 or col] == 2J and coí; > 5 and col, < > 10ciones 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 lospuede compartir entre las entradas que tienen esa com- mapas de bits a partir los mapas de bits de índices sobrebinación de valores, en lugar de almacenarlo explícita- las tres columnas. En este case, estas operaciones semente 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ón25.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 para12.9.4) utilizan una representación de mapa de bits para los valores de la clave> 5 se mezclarían en unaentradas 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 dedisco), 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 losbits 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 losmal. Sin embargo, donde un índice normal en una colum- valores 10 y null para col»na tuviera entradasde la fonna < col] > < id~fi{(l>, unaentrada 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 booleanasde 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 árbolnú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 detabla. 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 detener 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. 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 tabla (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 debeción de reunión se especifica cuando se crea el índice y asegurar que se adhiere a un protocolo específico en Suse 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. Elde 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 concondiciones de reunión entre la tabla de hechos donde los de otras rutas de acceso.
  9. 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. 10. CAPiTULO 25 OlAC-: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 tablaste en cambiar la consulta para utilizar la vista materia- subyacentes. La actualización incremental puede serlizada en lugar de las tablas originales en la consulta. mejor si el número de filas que se han cambiado esAdemás, la reescritura puede agregar reuniones adicio- pequeño. Hay algunas restricciones sobre las clases denales 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 indicanconsulta 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 elventas por mes, añadiendo agregación adicional para sentido que, aunque puede mejorar el rendimiento de laabstraer 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 compromisomite las relaciones jerárquicas en las tablas a definir. Oracle proporciona un paquete que puede aconsejar alPor ejemplo, una tabla de la dimensión temporal en un usuario de las vistas materializadas más efectivas en elesquema 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 delsamiento 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 partemé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. 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. 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 que25.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 desidera 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 deobjeto, 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. 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 11Iia 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 deoperació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. 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 con25.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 tiempode instrucción y de transacción. Al comienzo-de la eje- evitando, por consiguiente. la actividad transaccionalcució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 enge 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 comodel 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 (supuestoficado 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 deque no se pueden incluir en una vista consistente de la retroceder al estado anterior de los datos a menos quebase 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 muyde 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 sidoOrac1erecupera 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 mecanismoel Apartado 25.5.2). Por ello, supuesto que el segmento mucho más sencillo para tratar los errores del usuario. 623

×