Sie sind auf Seite 1von 13

Eficiencia de los ndices en Consultas e Inserciones en Base de

Datos Relacionales

Mg. Oliver Amadeo Vilca Huayta1


1
Universidad Nacional del Altiplano
ovilca@gmail.com

Resumen

En este artculo se muestra mediante un anlisis emprico la relacin entre los ndices
aplicados sobre tablas de bases de datos relacionales y su efecto en el tiempo de ejecucin de
las Consultas. Para dicho fin primero se generaron tablas con datos aleatorios, luego se
efectuaron consultas sobre las tablas tomando el tiempo del reloj de la computadora antes de
iniciar cada consulta y al finalizar, esto para diferentes tamaos de datos y para distintos
ndices (Btree, Hash). Finalmente se calcula la diferencia entre los tiempos de inicio y
tiempos de fin para cada tamao de datos. Los resultados muestran que la utilizacin de
ndices es determinante en la reduccin del tiempo de ejecucin de la consulta. Tambin en
base a los experimentos de empleo de los ndices Hash y BTree, se observa que los tiempos
de las operaciones disminuyen al usar ndices Hash ligeramente mas que con el ndice Btree.

1. Introduccin.

Una base de datos (cuya abreviatura es BD) es un conjunto de datos


estructurados pertenecientes a un mismo contexto y almacenados sistemticamente
con la menor redundancia posible. Especficamente una Base de Datos Relacional
consiste en un conjunto de tablas a cada una de las cuales se le asigna un nombre
exclusivo, que sirven de almacn de datos, la tabla est compuesta por registros (las
filas), que representaran las tuplas, y campos (las columnas) que son los atributos,
por ejemplo, en la tabla Cuenta de la figura 1, nmero-cuenta y saldo representa los
campos, y los tres registros corresponden a los datos de los saldos de tres clientes.
Hay una fuerte correspondencia entre el concepto de tabla y el concepto matemtico
de relacin (Silberschatz, Henry Korth, S. Sudarshan, 2010).

Pg. 1
nmero-cuenta saldo
04-201-417453 3500
04-201-417454 100
04-201-418468 7300
Figura 1. La relacin Cuenta.
Fuente: Elaboracin propia.

Para la administracin de las bases de datos relacionales, existen programas


denominados sistemas gestores de bases de datos, abreviado DBMS (del ingls
Database management systems), que permiten almacenar y posteriormente acceder
a los datos de forma rpida y estructurada. Para Silberschatz, Henry Korth, S.
Sudarshan (2011), es una coleccin de datos interrelacionados y un conjunto de
programas para acceder a esos datos, la coleccin de datos usualmente referido como
base de datos, contiene informacin relevante a una empresa. El objetivo principal de
un DBMS es proporcionar una manera de almacenar y recuperar informacin de la
base de datos de forma conveniente y eficiente a la vez.

Las propiedades de estos DBMS, as como su utilizacin y administracin, se


estudian dentro del mbito de la Ingeniera de Sistemas y Computacin. Hay varios
DBMS algunos son pertenecen al grupo de software libres 1 y otros
propietarios, se dispone por ejemplo de: PostgreSql (http://www.postgresql.org),
MySql (https://www.mysql.com), los cuales son cdigo abierto (opensource); y
Oracle, Microsoft SQL Server que son propietarios, entre otros muchos.

Para que el usuario pueda administrar y manipular de forma sencilla la base


de datos relacionales, los DBMS tienen un lenguaje estndar denominado SQL para
escribir rdenes en forma de consultas. El lenguaje de consulta estructurado o
SQL (por sus siglas en ingls Structured Query Language) es un lenguaje declarativo
de acceso a bases de datos relacionales que permite especificar diversos tipos de
operaciones en ellas. Una de sus caractersticas es el manejo del lgebra y el clculo

1
Software libre (en ingls free software) es la denominacin del software que respeta la libertad de
todos los usuarios que adquirieron el producto y, por tanto, una vez obtenido el mismo, puede ser
usado, copiado, estudiado, modificado, y redistribuido libremente de varias formas. Segn su principal
impulsora, la organizacin Free Software Foundation, el software libre se refiere a la seguridad de los
usuarios para ejecutar, copiar, distribuir y estudiar el software, e incluso modificarlo y distribuirlo
modificado.

Pg. 2
relacional que permiten efectuar consultas con el fin de recuperar, de forma sencilla,
informacin de bases de datos, as como hacer cambios en ellas. Por ejemplo si se
requiere requiere efectuar la consulta en el cual se muestra los nmero-cuenta cuyo
saldo son mayores o iguales a 1000, se escribe lo siguiente:
SELECT nmero-cuenta, saldo
FROM Cuenta
WHERE saldo >= 1000
Fuente: Elaboracin propia.

El resultado de dicha consulta esta conformado por las tuplas (filas) que
satisfacen la condicin de la consulta, es decir, las cuentas con saldo mayor o igual a
100:

04-201-417453 3500
04-201-418468 8300
Fuente: Elaboracin propia.

Debido a que las consultas (sobre base de datos) pueden involucrar mucho
tiempo es que se requiere mtodos de acceso rpido, para ello se utilizan estructuras
de datos y algoritmos para mejorar el acceso a dichos datos. Los ndices, se usan
para reducir el tiempo de recuperacin de registros de datos en respuestas a ciertas
condiciones de bsqueda (por ejemplo en la ltima consulta en SQL si hay gran
cantidad de clientes). La estructura de ndices normalmente proporcionan caminos de
acceso secundario, el cual genera caminos alternativos para acceder a los registros
sin que afecte la posicin fsica de los registros en el fichero. Permite un acceso
eficiente a los registros basndose en campos de indexacin que se utilizan para
construir el ndice.

Existen diferentes ndices, entre los de propsito general y de los mas


utilizados en la practica estn los ndices Btree y Hash (existen otros para
estructuras de datos espaciales por ejemplo el R-tree, etc). Un B-tree
(especficamente un rbol B+), es un rbol balanceado cuyos nodos contienen una
secuencia de pares de punteros-clave (comer, 1979). Las claves son ordenadas por
valor y los punteros en las hojas apuntan a las tuplas en la tabla indexada. Por
contraste la estructura Hash, es un mtodo de almacenamiento de clave basado en
Pg. 3
una funcin pseudo-aleatoria denominada funcin Hash. Dado una clave, la funcin
Hash retona la ubicacin.

Lo bueno es que la eficiencia de estos ndices pueden ser evaluados


mediantes el anlisis emprico, es decir, anotando el tiempo que toma las consultas
sobre casos preparados, es decir, sobre determinados tamaos de tablas y
determinadas formas de consulta. Se puede utilizar un lenguaje de programacin y
utilizar sus libreras para tomar el tiempo de la computadora, efectuar las consultas y
finalmente tomar nuevamente el tiempo, de este modo, la diferencia de los tiempos
es el tiempo que toma la consulta. Este procedimiento se repite para cada tipo de
ndice cruzado con cada tipo de consulta, por ejemplo: seleccionar el Cliente con
nmero de cuenta 1000; y tambin consultas en rango, por ejemplo Clientes con
nmeros de cuenta desde 1000 hasta 2000. Es posible que determinado ndice sea
eficiente para un tipo particular de consulta y no para otro tipo de consulta.

El trabajo muestra tambin que no basta conocer las caracterstica y el


manejo de un DBMS sino tambin la pertinencia del uso de los ndices de acuerdo a
la consulta requerida.

2. Resultados y discusin.

Generacin Estocstica de Datos.

Para el doblamiento con datos de la base de datos se elabor un programa. La


generacin de datos se efecta en una hoja electrnica, se desarroll un
procedimiento que genera los datos estocsticos para las tablas.

Cuando se ejecuta, la interfaz de configuracin solicita el ingreso de los siguientes


datos:

Pg. 4
Figura 1. Interfaz del programa de generacin de datos.

Cantidad de registros por tabla: indica la cantidad de registros que se


generara aleatoriamente.
Generar archivos planos: indica si el programa al terminar el lote de
registros, vuelca el contenidos a un archivo plano con separador de campo
el carcter |.
Directorio destino de archivo plano: indica el directorio en el cual se
guardaran todos los archivos planos generados.
Accin: indica, junto con la barra de progreso, la accin y su porcentaje
de progreso que esta haciendo el programa.
Botn Generar: al oprimir este botn, se esta indicando al programa que
genera el lote de prueba.
Botn Cancelar: indica que se cancela o termina la ejecucin.

Genera los siguientes archivos:

GenFileTxt "_usuario.txt", "INVESTIGADOR", 13


GenFileTxt "_tiene_jerarquia.txt", "TIENE_JERARQUIA", 2
GenFileTxt "_tiene_rol.txt", "TIENE_ROL", 2
GenFileTxt "_publicacion.txt", "PUBLICACION", 12
GenFileTxt "_tiene_publicacion.txt", "TIENE_PUBLICACION", 3
GenFileTxt "_catalogo.txt", "CATALOGO", 3

Los archivos binarios contienen informacin aleatoria para ser importados a la base
de datos.

Pg. 5
Figura 2. Reporte de generacin de datos.

Cada atributo generado es separado por el carcter |.

Inserciones.

Para las inserciones se generan los N datos con el programa de la seccin


anterior y luego se ingresan a las relaciones (tablas) correspondientes, tomando el
tiempo en cada insercin.

Para medir los tiempos se utilizo la medida mas exacta (que los segudos) los
ticks que dispone las libreras del gcc Linux (repitiendo segn el enunciado del
problema 20 veces cada consulta).

Una vez finalizada la consulta se vuelve a medir el tiempo. Finalmente se


calcula la diferencia entre los tiempos de inicio y tiempos de fin y se registra
(almacenndose en un archivo plano). Esta operacin se repite para cada relacin.

El cdigo de inserciones y consulta estn incluidas en el anexo.

Consulta.

A igual que las inserciones se calculan los tiempos al inicio y al final de cada
consulta, estas se registran y se elaboran los respectivos cuadros comparativos y sus
grficos relacionados.

El cdigo de las consultas se incluye en el anexo.

Pg. 6
RESULTADOS.

Figura 4. Costo de insercin sin ndices.

En la figura 4. se observa que el costo de insercin de registros en una tabla sin


ndices, aumenta de acuerdo con el tamao de datos, es decir, conforme al nmero de
registros de la tabla.

Figura 5. Costo de insercin con ndices Btree.

En la figura 5. Se observa que el costo de insercin de registros en una tabla con


ndice Btree, aumenta de acuerdo con el tamao de datos, es decir, conforme al
nmero de registros de la tabla.
Pg. 7
Figura 6. Costo de consulta con ndice Hash.

En la figura 6. Se observa que el costo de insercin de registros en una tabla con


ndice Hash, aumenta de acuerdo con el tamao de datos, es decir, conforme al
nmero de registros de la tabla.

Figura 7. Costo de consulta sin ndices.

En la figura 7. Se observa que el costo de consultas de registros en una tabla sin


ndice, aumenta de acuerdo con el tamao de datos, es decir, conforme al nmero de
registros de la tabla.

Pg. 8
Figura 8. Costo de consulta con ndice Btree.

En la figura 8. Se observa que el costo de consultas de registros en una tabla con


ndice Btree, permanece sin mayores cambios segn el tamao de datos, es decir,
conforme al nmero de registros de la tabla.

Figura 9. Costo de consulta principal sin ndices.

En la figura 9. Se observa que el costo de consultas de registros en una tabla sin


ndice, incrementa segn el tamao de datos, es decir, conforme al nmero de
registros de la tabla.

Pg. 9
Figura 10. Costo de consulta principal con ndice Btree.

En la figura 10. Se observa que el costo de consultas de registros en una tabla con
ndice Btree, incrementa segn el tamao de datos, es decir, conforme al nmero de
registros de la tabla.

Figura 11. Costo de consulta principal con ndice Hash.

En la figura 11. Se observa que el costo de consulta Principal de registros en una


tabla con ndice Hash, incrementa segn el tamao de datos, es decir, conforme al
nmero de registros de la tabla.

Pg. 10
Figura 12. Costo de consulta principal con ndices.

En la figura 12. Se observa que el costo de consulta Principal de registros en una


tabla con ndice Hash y sin ndices, incrementa segn el tamao de datos, es decir,
conforme al nmero de registros de la tabla. El tiempo es menor con ndice Btree.

Figura 13. Costo de consulta principal con ndices.

En la figura 13. Se observa que el costo de consulta Principal de registros en una


tabla con ndice Hash y sin ndices, incrementa segn el tamao de datos, es decir,
conforme al nmero de registros de la tabla. El tiempo es menor con ndice Hash.

4. Conclusiones.

En base a los resultados se puede concluir que a mayor cantidad de datos, el


costo de insercin aumenta proporcionalmente en el tiempo
independientemente de la utilizacin de ndices.

Pg. 11
Con registros en cantidades pequeas el costo de insercin es
aproximadamente igual con ndice o sin ndice.
A medida que se incrementa el nmero de registros el costo de la insercin en
tablas con ndice es mas significativo.
Explicacin: El costo de insercin sin ndice solo implica la adicin del
elemento en la tabla, en cambio si se tiene un ndice adems de actualizar la
tabla, tambin se debe actualizar el ndice, que puede tener costo mayor,
segn el tipo de ndice. Por ejemplo las actualizaciones en un rbol B pueden
requerir el movimiento de varios nodos del mismo.
Al comparar los costos de consulta considerando las muestras se puede
concluir que la utilizacin de ndices es determinante en la reduccin del
tiempo de ejecucin de la consulta.
Explicacin: Esto se explica el objetivo de los ndices, que se han creado para
permitir un acceso mas rpido en grandes cantidades de datos, segn el tipo de ndice
el nmero de lecturas es menor a que si no tuviera ndices.
Se seleccion la consulta mas significativa y que tenan mayor costo de
consulta con ndice, con la finalidad de obtener mayores medidas..
Comparando los resultados obtenidos de los experimentos utilizando ndices
Hash y BTree, se observa que los tiempos de las operaciones disminuyen al
usar ndices Hash mas que con Btree.
En todos los resultados obtenidos, el costo de insertar o consultar en
relaciones con ndice o sin ndice, con poca cantidad de registros (500 y
1000) es similar en ambos mtodos, no obstante a mayor cantidad de
registros, el uso de ndices produce una mejora en el costo promedio de las
operaciones.

BIBLIOGRAFA.

Aho, Alfred V.; Hopcroft, John E.; Ullman, Jeffrey D. The Design and Analysis of
Computer Algorithms. Addison - Wesley, 1974.

Atzeni Paolo, Ceri Stefano, Paraboschi Stefano y Torlone Riccardo. (1999). Database
Systems concepts, languages & architectures. McGraw-Hill Publishing Company.

Brassard, G.; Bratley, P. Fundamentos de Algoritmia. Pretince Hall International


(UK) Ltd. 1997.

Comer, D. (1979). The ubiquitous B-tree. ACM computing surveys. 11(2):121-137.

Cormen, Leiserson, Rivest. Introduction to Algorithms. Segunda Edicin. MIT Press


2001.

Elmasri, Armes. (2010). Fundamentos de Sistemas de Bases de Datos. PEARSON. 5th.


Edicin.

Pg. 12
Knuth, Donald Ervin. The Art of Computer Programing. Vol. 2. Seminumerical
Algorithms Segunda Edicin. Addison Wesley Publishing Company 1973.

Knuth, Donald Ervin. (1973). The Art of Computer Programing. Vol. 3. Sorting
and Searching. Segunda Edicin. Addison Wesley Publishing Company.

Mamber, Udi. Introduction to Algorithms a Creative Approach. Addison Wesley


Publishing Company 1989.

Naugler, David (May 2007). C# 2.0 for C++ and Java programmer: conference
workshop. Journal of Computing Sciences in Colleges 22 (5). "Although C# has been
strongly influenced by Java it has also been strongly influenced by C++ and is best
viewed as a descendant of both C++ and Java."

Silberschatz Abraham; Korth Henry; Sudarshan S. (2003). Fundamentos de Bases de Datos.


Editorial MacGraw Hill. Cuarta edicin.

Silberschatz, Korth Henry y Sudarshan S. (2011). Database System Concepts.


McGraw-Hill Education. 6 edicin.

Schildt, Herbert (1 August 1998). C++ The Complete Reference (Third ed.).
Osborne McGraw-Hill.

Pg. 13

Das könnte Ihnen auch gefallen