You are on page 1of 21

UNIVERSIDAD TCNICA

NACIONAL
RESUMEN: CAPITULO # 3
LIBRO: DATABASE TUNING
ESTUDIANTES:
LUIS FELIPE ALVARADO CARMONA
KAROL MOLINA BOLAOS
ENEMIAS JIMENEZ ARIAS
DANIELA LUNA UMAA
FRENES ALVARADO CARMONA
EDWARD CHACON ROJAS
VERONICA AGERO PEREZ

CURSO: BASE DE DATOS AVANZADA


PROFESOR:
ROMERO

HUBERTH

09 DE JUNIO DEL 2016

FALLAS

3.1 El objetivo de Captulo


Un ndice para una tabla es la organizacin de datos que permite ciertas
consultas con acceso a uno o varios registros de aquella tabla ms rpido. La
sintona apropiada de ndices es por lo tanto esencial al alto rendimiento. La
mala seleccin de ndices puede conducir a:

Los ndices que son mantenidos, pero nunca usados


Los archivos que son explorados para devolver un solo registro
La multitablas que corren sobre durante horas porque los ndices
incorrectos estn presentes (hemos visto esto)

3.2 Los tipos de Preguntas


De las que la utilidad de un ndice pero depende como las consultas usan el
ndice. Por ejemplo, si hay un ndice sobre el atributo A, pero ninguna consulta
menciona A, entonces el ndice implica en el mantenimiento sobre inserts,
suprime, y algunas actualizaciones sin ceder cualquier ventaja.

Los ndices en la arquitectura de un sistema de base de datos tpico. El director


de almacenaje proporciona ndices. Ellos organizan el acceso a datos en la
memoria y, para ndices de cluster, tambin organizan la disposicin de datos
sobre discos. Los ndices fuerte son integrados con los mecanismos de control
de coincidencia. Ellos pesadamente son usados por el procesador de pregunta
durante la optimizacin de pregunta.

Ya que un nmero infinito de preguntas es posible, extraeremos algunas


consultas
1. Una pregunta de punto devuelve en la mayora un registro (o la parte de
un registro) basado en una seleccin de igualdad. Por ejemplo, las

vueltas siguientes el nombre presentan el valor del empleado solo con el


nmero de identificacin 8478:
SELECT nombre FROM empleados WHERE ID = 8478
2. Una pregunta de multipunto es el que puede devolver varios registros
basados en una seleccin de igualdad. Por ejemplo, si muchos
empleados pueden estar en el mismo departamento, entonces lo
siguiente es una pregunta de multipunto:
SELECT nombre FROM
human resources

empleados

WHERE

departamento=

3. Una pregnta de gama sobre el atributo X es el que devuelve un juego de


registros cuyos valores se euncuentra entre un intervalo u otro decir
entre un intervalo medio para X.
SELECT nombre FROM Empleados WHERE salario = 120000 AND
salario 160000
4. Una pregunta de ordenamiento es el que muestra un juego de registros
en la orden del valor de algn atributo (o atributos). Por ejemplo, la
pregunta siguiente muestra al Empleado registra en la orden de sus
salarios. El primer registro es un Empleado que tiene el sueldo ms bajo,
y el ltimo registro es un empleado que tiene el sueldo ms alto.
SELECT * FROM Empleados ORDER BY salario
5. Una pregunta que se agrupa es el que que divide el resultado de una
pregunta en grupos. Por lo general, alguna funcin es aplicada a cada
particin. Por ejemplo, la pregunta siguiente encuentra el sueldo medio
en cada departamento:
SELECT dept, AVG(salario) as avgsalario FROM empleados ROUP
BY dept
6. la pregunta de juntar es el que que une dos o ms tablas. Si los
predicados que unen las tablas estn basados en la igualdad, llaman a la
pregunta de juntura una igualdad la pregunta de union. Por ejemplo, la
pregunta siguiente encuentra el nmero de Seguridad Social de los
empleados que son tambin estudiantes:
SELECT Employee.ssnum FROM
Employee.ssnum = tudent.ssnum

Employee,

Student

WHERE

3.3 Tipos de Llave


Muchos registros en las tablas de acompaamiento pueden tener el mismo
valor 1 clave del punto de vista del diseador de ndice, hay dos clases de
llaves en lo que concierne a una Tabla.

Una llave secuencial es el que cuyo valor es monotnico con el orden


de la introduccin. Es decir el ltimo registro insertado en la T tiene el
valor ms alto de la llave. Por ejemplo, si un fechado que marca el
tiempo de insercin de un registro era una llave, entonces esto sera una
llave secuencial. Otro ejemplo sera un contador que es incrementado
con cada encarte de registro.
Una llave no secuencial es una llave cuyo valor es sin relaciones al
orden de la introduccin a la tabla. Por ejemplo, si un nmero de
Seguridad Social era una llave de una tabla de Empleado, entonces esto
sera una llave no secuencial porque el ltimo registro insertado slo
raras veces tendr el nmero de Seguridad Social ms alto. En ciertos
casos, llaves secuenciales causarn problemas de control de
coincidencia como nosotros veremos.

3.4 Estructuras de Datos


La mayora de los sistemas de bases de datos compatibles con los rboles B, y
algunas mesas de apoyo de hash, proporcionan datos multidimensionales,
estructuras tales como variantes de quadtrees y R-rboles. Algunos tambin
apoyan vectores de bits y de varias tablas se unen a los ndices o sistemas de
memoria principal para apoyar las estructuras de datos que tienen expansiones
inferiores, tales como T-rboles, rboles, 2-3 y rboles binarios de bsqueda.
Estructuras de base de datos proporcionados por los sistemas
El patrn de acceso de un atributo de una tabla debe guiar la eleccin de la
estructura de datos para acceder a ella. (Otros factores tales como si el
atributo es la agrupacin o no tambin juegan un papel importante, como
veremos ms adelante en este captulo.) Para entender lo que cada estructura
de datos puede hacer, usted debe entender algunos detalles sobre su
organizacin.
Niveles, accesos profundidad, y de disco
rboles B, estructuras hash, y los ndices multidimensionales se pueden ver
como rboles. Algunos de los nodos en los rboles estn en la memoria de
acceso aleatorio y algunos no lo son. Como regla general, la raz ser a
menudo en la memoria de acceso aleatorio, y una hoja de arbitraria rara vez
ser. De hecho, la probabilidad de que un nodo este en la memoria de acceso
aleatorio disminuye cuanto ms lejos el nodo de la raz.
Debido a que un acceso a disco de memoria secundaria cuesta al menos varios
milisegundos si se requiere una bsqueda (ya que estos ndice accede a
voluntad), el rendimiento de una estructura de datos depende
fundamentalmente de la cantidad de nodos en el camino media de la raz a la

hoja. Ese nmero se conoce como el nmero de niveles en un rbol B. (Tenga


en cuenta que si su dispositivo de disco tiene una gran cach, entonces el
nmero de niveles que se encuentran en los aumentos de memoria de acceso
aleatorio en consecuencia.)
Por lo tanto, para calcular el nmero medio de nodos que hay que atravesar
para llegar a un nodo de datos tome en cuenta lo siguiente:
Para los rboles B, cuente el nmero de niveles
Para las estructuras de hash, calcular el nmero medio de desbordamientos
Algunos sistemas extienden la topologa del rbol de sus estructuras de datos a
travs de enlaces adecuados entre los nodos hoja, otros mtodos de control de
concurrencia
especializados tambin
pueden
utilizar
los
enlaces para eliminar los
cuellos de botella de
control de concurrencia
de las estructuras de
datos, como se muestra
originalmente
algunos
algoritmos prcticos para
unificar este estilo de
control de concurrencia y consideraciones de recuperacin.
Optimizacin de ndices
Ejemplo de rbol B +. Los nodos hoja contienen entradas de datos (en este
diagrama, las datais representados por la casilla junto a cada tecla). Todas las
entradas de datos se encuentran en la misma distancia de la raz; ese es el
significado de equilibrio. Los nodos no hoja contienen pares clave-puntero. En
realidad, hay teclas M y M + 1 punteros en cada nodo no hoja. Cada PI puntero,
asociado a una clave Ki, apunta a un subrbol en el que todos los valores de
clave Klie entre KI y KI + 1 (puntos P0 a un subrbol en el que todos los valores
de clave estn a menos de puntos K0 y P m a un subrbol en el que todos los
valores de clave son mayores que K m). En la mayora de las
implementaciones, los nodos hoja (y no hoja nodesat el mismo nivel) estn
vinculados en una lista enlazada para facilitar las bsquedas por rangos y
mejorar la concurrencia.

rboles B
Un rbol B es un rbol equilibrado cuyas hojas contienen una secuencia de
pares clave-puntero. Las teclas estn ordenadas por valor de 3 (Figura 3.3).
Figura

Los rboles B son la mejor estructura de datos general para los sistemas de
base de datos que rara vez requieren reorganizacin, y soportan bien muchos
diferentes tipos de consulta. Si consultas de rango (por ejemplo, encontrar
todos los salarios entre $ 70.000 y $ 80.000) o consultas extremales (por
ejemplo, encontrar el salario mnimo) se producen con frecuencia, entonces los
rboles B son tiles, mientras que las estructuras de hash no lo son.
Lo que llamamos rboles B que aqu se denomina tcnicamente B + rboles.
En sentido estricto, un rbol B tiene punteros a las pginas de datos (o
registros) en sus nodos internos, as como en sus nodos hoja; esto resulta ser
una mala estrategia, ya que revierte en poco despliegue en abanico. Por lo
tanto, todos los principales proveedores de bases de datos utilizan los rboles
B + (que tienen punteros a los datos slo en las hojas).
Calculemos el nmero de niveles hacia abajo un rbol B puede ser cuyas
pginas contienen la hoja de 40 millones de pares clave-puntero.
Si los punteros son 6 bytes de longitud y las teclas son 4 bytes de longitud, a
continuacin, aproximadamente 400 pares de clave-puntero que caben en una
pgina de 4 kilobytes. En este caso, el nmero de niveles (incluyendo las
pginas de hoja) de un rbol B con 64 millones de pares clave-puntero sera 3.
El nivel de la raz consistira en un nodo (la raz). El siguiente nivel sera tener
400 nodos. El nivel de hoja tendra 160.000 nodos, cada uno con 400 pares de
clave-puntero que da un total de 64 millones.
Esto supone la utilizacin del 100%. Si los nodos se fusionan cuando caen a la
mitad, a continuacin, su utilizacin se mantiene en torno al 69%. Con el fin de
ahorrar tiempo reestructuracin y aumentar la cantidad de concurrencia,
algunos sistemas no se unen nodos. Los estudios realizados por Ted Johnson y
Shasha han hown que para B-rboles con ms insertos de eliminaciones (tanto
al azar), la utilizacin estar en el rango de 65% a 69%, incluso si los nodos
estn Nunca merged.5 Eso dara a ms de 41 millones de pares clave-puntero
en las hojas de un rbol B de tres niveles.
Por el contrario, si las claves son 94 bytes de longitud, entonces slo puede
caber 40 por pgina. En ese caso, aun suponiendo 100% de utilizacin,
el nivel de la raz tendra un nodo.
Nivel 2 tendra 40 nodos.

Nivel 3 tendra 1600 nodos.


Nivel 4 tendra 64.000 nodos.
4. En los sistemas que utilizan bloqueo de pgina, los rboles B funciona mal si
se basan en claves y secuenciales hay muchas inserciones porque todas las
inserciones tendrn acceso a la ltima pgina, la formacin de un control de
concurrencia embotellamiento.
Nivel 5 tendra 2.560.000 nodos, cada uno con un mximo de 40 pares clavepuntero.
Por lo tanto, se necesita un rbol B de cinco niveles para almacenar todos estos
pares clave-puntero.
En este ejemplo, una llave grande puede hacer que el rbol B sea dos niveles
ms profundo. Si los datos son estticos, a continuacin, utilizar la opcin de
compresin clave de su sistema 's, si lo tiene. Esto reducir el espacio
necesario y guardar accesos a disco, a un costo relativamente pequeo
procesador (aproximadamente el 30% por acceso de registro). Una tcnica de
compresin tpica se llama compresin de prefijo la cual almacenar en nodos
no hoja slo la parte de una llave que se necesita para distinguir la llave de sus
vecinos en el nodo. Por ejemplo, si hay tres teclas consecutivas Smith, Smoot,
y Smythe, entonces slo SMI, SMO, y Smy necesita que se mantenga. Muchos
sistemas utilizan la compresin de prefijos.
Otras formas de compresin son ms controvertidas. Por ejemplo, una versin
de Oracle tena una forma de compresin denominado compresin frontal en el
que las teclas adyacentes tuvieron su parte eading comn factorizar. Por lo
tanto, las tres teclas anteriores se almacenan como Smith, (2) o, (2) y, en el
que el 2 indica que los primeros dos caracteres son los mismos que la clave
anterior. Esto guarda el espacio, pero caus dos problemas.
Esto implic sobrecarga del procesador sustancial para el mantenimiento.
Se hizo elemento de bloqueo dentro de los nodos de rbol B ms sutil de
bloqueo (2) y tendra que hacer un bloqueo implcitamente Smith tambin.
Oracle sigue ofreciendo algn tipo de compresin (la clusula COMPRESS en
CREATE INDEX), pero debera utilizar esto slo en ambientes de baja de
actualizacin.
Estructuras de hash
Son un mtodo de almacenar pares clave-valor en base a una funcin pseudoaleatorizacin se llama una funcin hash. (Pseudo-aleatorizar aqu significa que
para la mayora de los juegos de llaves, la funcin de hash, cuando se aplica a
estas teclas, dar lugar a una distribucin de valores que es similar a lo que se
producira por azar, con igual probabilidad, la asignacin de cada clave a un
valor en el rango de la funcin hash.) La funcin de hash puede ser pensado
como la raz de la estructura. Dada una clave, la funcin hash devuelve una

ubicacin que contiene una direccin de pgina o una ubicacin de directorio


que contiene una direccin de pgina. Esa pgina contiene ya sea el registro
de clave y asociada o es la primera pgina de una cadena de desbordamiento
que conduce al registro (s) que contiene la clave. La funcin hash volver
arbitrariamente diferentes lugares en los valores fundamentales que estn
cerca pero desigual (por ejemplo, Smith y Smythe). Por lo que los registros que
contengan dichas claves cierre ser probablemente en diferentes pginas.

FIGURA 3.4 Hash con rebosadero cadena.


Evaluacin.
Pueden responder a consultas puntuales (por ejemplo, encontrar el empleado
cuyo nmero de la Seguridad Social 247-38-0294) en un acceso de disco
siempre que no haya cadenas de desbordamiento, por lo que las mejores
estructuras de datos para ese fin (Figura 3.4). Tambin son buenos para las
consultas multipunto especialmente si son parte de un ndice de clster (ver
seccin 3.6). Sin embargo, son intiles para las consultas de rango, prefijos, o
extremales.
Si usted encuentra que su estructura de hash tiene una cantidad significativa
de encadenamiento de desbordamiento, tendr que reorganizar la estructura
de hash despus de un gran nmero de inserciones. Evitando el
encadenamiento de desbordamiento puede requerir que no utilizan
debidamente el cifrado de espacios. Algunos consultores de rendimiento
sugieren que una tabla hash debe ser no ms de 50% de su capacidad para
asegurar que un solo acceso al disco ser suficiente en la media.
Por lo tanto, las estructuras de hash tienen relativamente pobre utilizacin del
espacio, pero ya que el espacio en disco est casi libre, esto no tiene
importancia para la mayora de aplicaciones.
Debido a que las funciones de hash convierten claves a ubicaciones o
identificadores de pgina, el tamao de una estructura de hash no est
relacionado con el tamao de una llave. El nico efecto de tamao de la clave
en una estructura de hash es que la funcin hash tarda un poco ms para
ejecutar en una clave de largo. Teniendo en cuenta las velocidades del
procesador de hoy en da, esto no es un factor importante.

Mientras que las estructuras de hash con una baja utilizacin del espacio
funcionan bien para consultas puntuales, que un mal rendimiento de consultas
que se deben analizar todos los datos.
3.4.2 Estructuras de datos para los datos en memoria
Una tabla de consulta es una tabla que se lee a menudo, pero nunca
actualizado (actualizado o al menos no durante el procesamiento de
transacciones en lnea). Ejemplos tpicos de tablas de bsqueda son tablas de
conversin, por ejemplo, de los cdigos de dos letras que ya existen completos
de estados o pases.
Poniendo estas mesas pequeas en el sistema de base de datos presenta una
sobrecarga innecesaria, por lo que muchos diseadores de aplicaciones
almacenan estas tablas como matrices ordenadas, listas enlazadas, o
estructuras que se buscan ordenados secuencialmente. (Bsicamente, se
utilizan cualesquiera que sean sus bibliotecas de aplicaciones les dan.)
Es posible, sin embargo, tenga en cuenta las diferentes estructuras de datos.
Ya hemos hablado de las estructuras de Hash y los rboles B. Un caso especial
de un rbol B, conocido como rbol de 2-3, es una buena opcin para mantener
los datos ordenados dentro de la memoria de acceso aleatorio. Al igual que un
rbol B, todas las hojas en un rbol 2-3 son la misma distancia de la raz. La
diferencia es que el despliegue en abanico mxima es de 3 y el despliegue en
abanico mnimo es 2. Esto hace que para un rbol ms profundo, menos
espeso que un rbol B estndar.
Un rbol de bsqueda profunda estrecha reduce intranodal y aumenta el
nmero de recorridos puntero de los entrenudos. En muchas situaciones, esto
reduce el nmero de instrucciones requeridas para cada bsqueda. En 1986,
Mike Carey y sus colegas de la Universidad de Wisconsin en Madison definen el
T-rbol para explotar esta disyuntiva. 6 El sistema de base de datos de la
memoria principal TimesTen utiliza el T-rbol.
Debido a la velocidad de la CPU ha aumentado mucho ms rpido que la
velocidad de acceso a memoria en los ltimos 20 aos, los accesos a memoria
(no consecutivos accede especialmente la memoria) puede ser cientos de
veces ms lento que un ciclo de instruccin. Trabajos recientes han
demostrado que en memoria las estructuras de datos no deben ser
optimizados para el uso de CPU reducida, sino para la reduccin de errores de
la cach del procesador. De hecho, la brecha entre el cach y la memoria
accesos principales accesos est aumentando continuamente. Recientemente,
Kenneth Ross y Jun Rao han propuesto un rbol B + cach sensible donde cada
nodo tiene el tamao de una lnea de cach y donde se eliminan los punteros
cuando sea posible. 7
Mediante la eliminacin de los punteros, ms keyscan ser colocados en cada
nodo. Como resultado, se maximiza el nmero de comparaciones clave por
lnea cach. Las estructuras sensibles al cach se pueden incluir en futuras
versiones de los sistemas de bases de datos.

Una estructura que es ideal para buscar cadenas (o sus prefijos) en la memoria
es el trie. Si desea buscar los infijos de cuerdas, a continuacin, utilizar las
estructuras relacionadas, si est disponible: el rbol de sufijos y la cadena Brbol.
Otra estructura para los diseadores que les gusta la simplicidad de las listas
enlazadas es la lista enlazada ordenada frecuencia. La idea de esta estructura
es que son los ms accedidos las primeras entradas de la lista enlazada y las
ltimas entradas son los menos frecuentes
Un algoritmo de fondo mantiene un registro de accesos y reordena la lista
adecuadamente durante perodos de silencio. Esto funciona bien para las listas
de preguntas frecuentes, donde la frecuencia determina la posicin en la lista.
Si su solicitud se refiere a la geografa o la geometra, entonces usted debe
saber acerca de las estructuras de datos multidimensionales. Ejemplos tpicos
que se pueden encontrar en la literatura son quadtrees, R-rboles, rboles de R
+, estructuras de rejilla, y HB-trees.8. Al igual que ndices compuestos
(discutidos ms adelante en este captulo), estructuras de datos
multidimensionales se aplican a varios atributos. A diferencia de los ndices
compuestos,
estructuras
de
datos
multidimensionales
se
aplican
simtricamente a sus atributos, que a menudo hace que el procesamiento de
consultas geogrficas ms eficiente.
Un ejemplo tpico de consulta busca todas las ciudades que tienen al menos
10.000 habitantes dentro de un cierto rango de latitud y longitud que es,
simtricamente a lo largo ambas dimensiones.
SELECT nombre
FROM City
Donde la poblacin> = 10000
Y latitud> = 22
Y latitud <25
Y longitud> = 5
Y longitud <= 15
Hasta ahora, los sistemas de informacin geogrfica comerciales han utilizado
principalmente R-rboles y quadtrees para responder a este tipo de consultas.
Si usted tiene que responder a estas preguntas, asegrese de que su sistema
de base de datos tiene este tipo de estructuras construidas en o como una
extensin.
3.5 ndices Dispersos Versus Densas
La parte de la estructura de datos de un ndice tiene punteros en sus hojas a
cualquiera de las pginas de datos o registros de datos.

Si hay a lo sumo un puntero de la estructura de datos para cada pgina


de datos, entonces la ndice se dice que es escasa.
Si hay un puntero para cada registro en la tabla, entonces el ndice se
dice que es densa.
Suponiendo que los registros son ms pequeas que las pginas (el caso
normal), un ndice disperso llevar a cabo menos teclas que una densa uno. De
hecho, la
Nmero de punteros en el ndice de densidad = nmero de punteros
de ndice disperso nmero de registros por pgina
Si los registros son pequeas comparadas con las pginas, entonces habr
muchos registros por los datos pgina, y la estructura de datos que soporta un
ndice disperso por lo general tienen un nivel menor que la estructura de datos
que soporta un ndice denso. Esto significa un menor acceso de disco si la tabla
es grande. Por el contrario, si los registros son casi tan grandes como las
pginas, entonces una escasa ndice rara vez tienen mejores propiedades de
acceso al disco que los ndices densos.
Una ventaja significativa de los ndices densas es que pueden apoyar (cubren"
es el palabra que se usa a veces) determinadas consultas de lectura dentro de
la estructura de datos en s. Por ejemplo, si hay un ndice de densidad de las
palabras clave de un sistema de recuperacin de documentos, se puede contar
el nmero de listas de palabras clave que contienen algn trmino, por ejemplo
", montaa rastro, "sin tener acceso a los documentos mismos. (Informacin
Count es til para que la aplicacin debido a interrogadores con frecuencia
restrinja su consulta cuando descubren que su consulta actual sera recuperar
demasiados documentos.

LO
DE
Daniela

3.7 Unin, restricciones de clave externa e ndices


La base de datos permite que se conecten dos tablas R y S. Esto se puede
hacer o inteligentemente mal. Una forma es tomar cada fila de R y luego
buscar a travs de las filas de S de partidos. Este enfoque se denomina un
bucle anidado ingenua unirse. Si no hay un ndice en S, a continuacin, el
tiempo requerido es proporcional al tamao de R veces el tamao de S (| R | x
| S |).
Esto es malo porque incluso modestos millones de filas de las tablas requieren
un billn de comparaciones. Si existe un ndice en el atributo de unirse a S,
entonces el trabajo realizado por cada fila de R conlleva una bsqueda de
ndice para las filas apropiadas de S, dando tiempo proporcional a | R | log
(| S |). Por lo tanto, un bucle anidado indexado es mucho mejor que un bucle
anidado ingenuo.
En cuanto a las selecciones, un ndice puede cubrir una condicin de unin, en
cuyo caso el ndice ayuda an ms. Por ejemplo, un ndice en SB cubrira la
condicin de unin en este caso
SELECT R.B, R.D
FROM R, S
WHERE R.A = S.B
Pero no en este.
SELECT R.C, R.D. S.E
FROM R, S
WHERE R.A = S.B
Otro enfoque para la igualdad de unin que se utiliza cuando ni R ni S tiene una
ndice es para discutir a ambos cuadros basados en la misma funcin de

control sobre los atributos y unirse luego unirse a los cubos


correspondientes. Por lo tanto, si la unin eran RA = SB, un hash tales unirse
sera reorganizar R en cubos basados en H (RA) y S basado en H (SB) y luego
se unira al primer cubo de R con el primer cubo de S, el segundo cubo
de R con el segundo cubo de S , y as sucesivamente. Si A es una clave o casi
una clave de R (es decir, hay casi tantos valores diferentes de la AR, ya que
hay filas en R) o similarmente B es una clave.

FIGURA 3.13 Unin con pocos registros coincidentes. Una combinacin


hash con ningn ndice es ms rpido que un bucle anidado indexado unirse a
depender de un ndice de clster en el atributo de unirse porque el ndice de
agrupacin es escaso. El ndice nonclustering es ignorado: una combinacin
hash se utiliza. Esta experimento se realiz utilizando SQL Server 7 en Windows
2000.
O casi una clave de S, entonces el tiempo para hacer esta operacin es
proporcional a la suma de | R | y | S | (| R | + | S |). De manera predeterminada
de SQL Server y DB2 UDB utilizan una combinacin hash cuando ningn ndice
est presente. Como muestran las figuras 3.13 y 3.14 muestran, la
combinacin hash puede ser ms rpida que un bucle anidado indexado unirse
en ciertas circunstancias.
Por lo tanto, las enseanzas bsicas de una combinacin de igualdad (por lo
concreto, permiten ser el predicado RA = SB) son los siguientes:
1. Un bucle anidado en un ndice basado en un ndice en SB funciona mejor que
una unin de hash si el nmero de valores distintos de SB es casi igual al
nmero de filas de S .Este es el caso comn porque la mayora son clave
externa se une une.
2. Lo mismo se aplica con independencia del nmero de valores distintos
de SB si el ndice cubre la unin porque entonces los nicos accesos a S se
producen datos dentro del ndice.

FIGURA 3.14 Unin con muchos registros coincidentes. Una combinacin


hash sin realiza ndice peor que los otros mtodos porque la configuracin de
los cubos requiere una gran cantidad de memoria y reorganizacin disco. Este
experimento se realiz utilizando SQL Server 7 en Windows 2000.
3. Lo mismo es, independientemente del nmero de valores distintos
de SB si S es agrupado basado en B porque todo s filas que tengan iguales B se
yuxtapuestas valores.
4. De lo contrario, la combinacin hash puede ser mejor.
Hay otros dos casos en los que un ndice puede ser particularmente til.
1. En el caso de un nonequijoin (por ejemplo, RA> SB), un ndice (utilizando un
ordenado de datos estructura como un rbol B) en el atributo unirse evita un
escaneo completo de tabla en el bucle anidado.
2. Apoyar una restriccin de clave externa como la RA debe ser un subconjunto
de SB (por ejemplo, la AR puede sostener el identificador de proveedor en una
mesa con proveedor partes y S puede ser la tabla de proveedores con el campo
id B). En este ejemplo, el atributo A se dice que es una clave externa
de R y B es una clave principal en S. Para tal exigencia, un ndice en
SB acelerar inserciones en el vector R. El sistema genera la siguiente bucle
anidado: por cada registro insertado en R, compruebe la restriccin de clave
externa en S. Del mismo modo, un ndice en la AR se acelerar delaciones
en S. El sistema genera otro bucle anidado: por cada registro borrado de S, el
registro R que no hay clave externa que hace referencia el valor se va a
eliminar.
3.8 Evitar ndices de las tablas pequeas

Los ndices de las tablas pequeas pueden hacer ms dao que bien. Muchos
manuales del sistema le dir que no use un ndice en una tabla que contiene
menos de, digamos, 200 registros. Sin embargo, usted debe saber que este
nmero depende del tamao de los registros en comparacin con el tamao de
la clave de ndice.
Una bsqueda de artculos requerir lee de al menos uno y posiblemente dos
pginas de ndice y una pgina de datos. Por el contrario, si la totalidad de la
relacin se lleva a cabo en una sola pista de disco, la lectura puede requerir
solamente una sola lectura fsica (siempre que fija su la obtencin previa de
parmetro para permitir que el sistema lea toda una pista a la vez). Un ndice
puede perjudicar el rendimiento en este caso.
Si cada registro ocupa una pgina entera, por el contrario, a continuacin, 200
registros pueden requerir accesos al disco 200 o ms. En este caso, un ndice
es de mrito para un punto consulta debido a que darn lugar slo dos o tres
accesos al disco.
Si muchas inserciones ejecutan sobre una mesa con un pequeo ndice,
entonces el ndice en s puede convertirse en un cuello de botella en el control
de concurrencia. (Bloqueo de conflictos cerca de las races de ndice
estructuras de datos pueden formar un cuello de botella. Dichos conflictos
surgen cuando muchas inserciones aplicar a un pequeo ndice).
Evitando sistemticamente ndices en una pequea mesa tambin puede ser
perjudicial. En el ausencia de un ndice, una pequea mesa puede convertirse
en un cuello de botella si la serializacin transaccin iones actualizar un nico
registro. Sin un ndice, cada transaccin explora a travs de muchos registros
antes de que se bloquee el registro correspondiente, reduciendo as la
actualizacin de concurrencia.
3.9 Organizacin de tabla y Seleccin de ndice
Reglas bsicas y uso de experimentos para cuantificar opciones.
1. Use una estructura de hash para consultas de igualdad. Use un B-trees si la
igualdad y consultas de no igualdad pueden ser usadas.
2. Use clustering (tablas organizadas por ndice en Oracle) si sus consultas
necesitan que todo o la mayor parte de los campos de cada registro sean
devueltos, los registros sean demasiado grandes para un ndice compuesto
sobre todos los campos, y usted puede traer mltiples registros por consulta.
3. Use un ndice denso para cubrir consultas crticas.
ndices y actualizaciones.
Cuando ningn ndice es usado, la tabla tiene que ser explorada realizando una
actualizacin, y las llaves son solicitadas para todas las filas que son
atravesadas por la operacin de exploracin. Las actualizaciones simultneas
son as imposibles. Al contrario, la presencia de un ndice clustered sobre el

atributo sobre el cual la condicin de actualizacin es expresada permite


actualizaciones simultneas.
4. No use un ndice si el tiempo que usted perder durante un insert o update
debido a los ndices excede el tiempo estimado, usted ahorra en consultas.
Use la compresin llave en las siguientes condiciones:

Usted usa una estructura de datos otra que una estructura de hash.
La Compresin de la llave reducir el nmero de niveles en su ndice.
Su sistema es el disco atado, pero tiene mucho poder de procesador.
Actualizaciones a la estructura de datos son relativamente raro. (Las
actualizaciones a la tabla subyacente que no afecta el ndice no causan
ninguna dificultad, pero las inserciones y borrado si afecta).

Bajo incluye en un ndice en lo alto para la insercin.


El coste de insertar datos en indice clustering o ndice nonclustering solo es
similar al coste de insertar datos en un montn; el elevado se hace
significativo cuando el nmero de nonclustering incluido en un ndice aumenta,
y el nmero de hilos simultneos que realizan los aumentos de inserciones.
summarizes the facilities offered by some major relational products.
Lo que otros sistemas llaman ndices de clustering, Oracle llama tablas
organizadas por ndice. El ndice usado es un B-tree. Una limitacin es que
estos ndices se aplican slo a una llave, entonces ellos estructura el punto,
pero no consultas de multipunto. Para estructurar consultas de multipunto,
usted puede usar un Oracle cluster(que es una facilidad general que permite
que usted al grupo registre de una o varias tablas juntos). El Oracle 8i y
versiones ms altas proporciona ndices de mapa de bits. Un ndice de mapa de
bits es una tabla donde las columnas representan los valores posibles de la
llave; para cada fila en la relacin hay una fila en la tabla de mapa de bits.
Cada entrada en la tabla de mapa de bits es un bit que es puesto en 1 si el
valor clave en la fila dada corresponde al valor de columna y a 0 de otra
manera (sobre cada fila un bit es puesto a 1 y el resto es puesto a 0).
Alto ndice en lo alto para insercin.
TABLA. ndices ofrecidos.

Usando el Oracle 9i sobre un servidor Linux, Medimos el rendimiento con o sin


un ndice nonclustered definido sobre un atributo. La presencia del ndice
considerablemente afecta el funcionamiento.
INDEX TUNING WIZARD
El wizard toma como la entrada un esquema (con la existencia ndice) y la
descripcin de una carga de trabajo (el rastro de declaraciones SQL). Esto
produce como una salida de recomendaciones: nuevos ndices para ser
creados e ndices posiblemente existentes para ser quitadosPrimero, el wizard
evala el mejor ndice para cada SQL declarado en la carga de trabajo.
Procedimiento
Enumera ndices relevantes sobre un atributo, entonces calcula el coste de los
proyectos de ejecucin que usaran estos ndices (el mantenimiento en lo alto
es considerado para insertan/suprimen declaraciones).
En un segundo paso, el wizard calcula el coste de combinar los ndices que han
sido recogidos en la primera fase (el coste de mantener que ndices existentes
son considerados adems de la aceleracin de consulta). El subconjunto de
ndices con el coste combinado ms bajo es usado para la recomendacin final
y dejamos al wizard escoger el ndice apropiado.
En cada caso, el wizard escogi el ndice apropiado: un ndice de cubierta
cuando un nmero limitado de atributos est implicado en una consulta, un
ndice de clustering para consultas de multipunto, o un ndice sobre una
pequea tabla porque las actualizaciones son realizadas. Podemos ver dos
limitaciones en el empleo del wizard:

No hay ninguna prioridad entre las declaraciones diferentes en la carga


de trabajo.
Es posible que el wizard no recomienda el mejor ndice para el wizard
hace un trabajo del primer corte muy bueno.

ndice de Texto.
Un ndice invertido definido sobre una columna de texto es una secuencia (de
la llave, el indicador) pares donde cada palabra en el texto es una llave cuyo
indicador asociado se refiere al registro ha sido extrado de.
Esto compara el funcionamiento de consultas de multipunto basadas en la
igualdad y predicados de subcuerda que usan un ndice invertido y una B +
tree. Definimos estos ndices sobre el atributo de comentarios de la TPC-H
lineitem la relacin; este atributo es de tipo varchar (44). Usando una B + el
rbol el predicado de igualdad es =, y el predicado de subcuerda es. Cuando
un ndice invertido es definido, tanto igualdad como los predicados de
subcuerda son construidos usando el CONTIENE la funcin que averigua el
invertido ndice.
3.10 distribucin de los ndices de una tabla caliente

En la tabla caliente es el que tiene acceso a muchas transacciones al mismo


tiempo. Puede tener varios discos disponibles, que es un RAID 5
Usted puede elegir una de dos organizaciones.

Insertar o eliminar-aplicaciones deben mover sus ndices

consultas de
rendimiento

Figura 3.19 Comparacin del B-tree, hash y mapa de bits ndice


multipunto consultas. Un cientos de registros se devuelven por cada

consulta de igualdad. En la estructura de hash, estos 100 registros asignar a la


misma clave hash (picadillo), por lo que requiere una cadena de
desbordamiento. El B-tree Cluster ofrece buena rendimiento ya que los
registros devueltos estn en pginas contiguas. El ndice de mapa de bits hace
no realiza bien ya que es necesario recorrer el mapa de bits todo a unos pocos
registros coincidentes. Este experimento se realiz con EE de Oracle 8i en
Windows 2000.
3.11 general cuidado y alimentacin de los ndices
Estos son algunos consejos de mantenimiento de ndices.

De vez en cuando, sus ndices necesitan el equivalente a los datos de un


ascensor

Figura 3.20 Comparacin del B-tree, hash y mapa de bits ndice gama
consultas. Como era de esperar, ndices hash no ayudan al evaluar consultas
de rango. Este experimento fue realiza utilizando Oracle 8i EE en Windows
2000.

Figura 3.21 Comparacin de consultas de punto ndice B-tree y hash.


ndice hash supera a B-tree en punto de las consultas. Este experimento se
realiz usando Oracle 8i EE Windows 2000.

Figura 3.22 Distribucin de ndices de. En este experimento, colocando el


ndice en un separado disco ofrece alguna ventaja al insertar datos. Punto o
multipuntos consultas hacen no siempre beneficio de separacin de datos e
ndices. Se utiliz Oracle 8i en Windows 2000 para este experimento.
Una estructura hash tiene cadenas largas desbordamiento el cual muestra
el bajo rendimiento por punto o multipuntos consultas
Un B-tree tiene muchos nodos vacos que no han sido retirados
Para solucionar estos problemas, puede borrar el ndice y reconstruirlo

Figura 3.23 Repartir ndices. Datos estn repartido en tres discos, cada
disco residen ndice y datos. Inserciones son ms lento en comparacin con un
almacenamiento de disco. Consultas de punto se benefician un poco de esta
particin. Este experimento fue realizado en Oracle 8i EE en Windows 2000.
El uso de una funcin de cadena. Por ejemplo, no puede utilizar la siguiente
consulta un ndice en Nombre de algunos sistemas:
SELECT *
FROM Employee
WHERE SUBSTR(name, 1, 1) = G

Si una lazo variable (variable por el lenguaje de programacin) tiene un diverso


tipo que el atributo que se est comparando, el ndice de no se puede utilizar.
As que, si comparas una lazo variable con un atributo de la tabla, Asegrese
de que son del mismo tipo. Esto significa entero con entero del mismo tamao,
flotado con flota de mismo tamao y cadena con cadena del mismo tamao
mximo.
Una comparacin con NULL.
SELECT *
FROM Employee
WHERE salary IS NULL

You might also like