Professional Documents
Culture Documents
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
HUBERTH
FALLAS
empleados
WHERE
departamento=
Employee,
Student
WHERE
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.
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.
LO
DE
Daniela
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
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).
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
consultas de
rendimiento
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.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