Introducción
Un sistema de administración de bases de datos es importante porque su administración es eficiente y permite a los usuarios realizar múltiples tareas con facilidad. Almacena, organizar y gestionar una gran cantidad de información que más tarde podrá ser consultada para generar reportes, minería de datos y descubrimiento de nuevo conocimiento.
Sin la administración de la base de datos, las tareas deben realizarse manualmente y tomar más tiempo. Los datos se pueden categorizar y estructurar para adaptarse a las necesidades de la empresa u organización. Los datos se ingresan en el sistema y los usuarios asignados acceden de forma rutinaria.
Estos sistemas de gestión usan varias tablas y definen relaciones. Los registros y los elementos de datos de cada tabla se pueden interrelacionar de forma dinámica para su actualización o consulta.
Con la presente unidad académica se pretende brindar a los estudiantes bases teóricas para comprender la importancia que tienen los índices en el rendimiento de un SGBD así como la importancia de conocer herramientas que permitan realizar su definición, configuración y monitoreo constante sobre el consumo de recursos para un eficiente control del sistema de información.
Propósitos de aprendizaje
Propósito general
Proveer a los estudiantes lecciones avanzadas y buenas prácticas para la gestión de índices y la optimización del rendimiento en un sistema de gestión de bases de datos.
Propósitos específicos
- Proporcionar al estudiante los fundamentos conceptuales para la identificación de los diferentes tipos de índices en un SGBD.
- Dotar al estudiante de bases teóricas sobre la correcta Identificación de los índices adecuados para mejorar la eficiencia de una consulta.
- Proveer al estudiante los conocimientos para aprender a combinar diferentes tipos de índices.
- Proporcionar al estudiante conocimientos para realizar estimaciones sobre consumo de espacio y memoria en el manejo de los índices
Conceptos básicos
Un índice de base de datos permite que una consulta recupere datos de una base de datos de manera eficiente. Los índices están relacionados con tablas específicas y consisten en una o más claves. Una tabla puede tener más de un índice creado a partir de ella. Las claves son un término elegante para los valores que queremos buscar en el índice. Las claves se basan en las columnas de las tablas. Al comparar las claves del índice, es posible encontrar uno o más registros de la base de datos y así recuperarlos (Microsoft, 2017).
Una de las funciones principales de un índice es acelerar y optimizar la recuperación de registros de una tabla.
Una de las prácticas mas utilizadas para seleccionar qué columnas de la tabla deben tener índices, es identificar en las consultas, que se utilizan para generar los reportes, aquellos campos que se usan en las sentencias del WHERE, lo anterior debido a que son los campos por los cuales se ejecutan constantemente búsquedas.
|
Un error muy común de encontrar en los desarrolladores es cuando implementan un sistema de información y la base de datos tiene pocos registros, ellos no ven la necesidad de crearlos, pero a medida que el volumen de datos aumenta, es donde empiezan a detectar que hacen faltan estructuras que permitan optimizar las consultas, es decir, estructuras como los índices. |
Conceptos básicos
Ventajas de utilizar índices
La principal ventaja de utilizar índices en las bases de datos es que ayudan a acelerar la recuperación de datos. El otro gran beneficio de los índices es que el servidor donde está alojada la base de datos no debe realizar tanto procesamiento para obtener los datos.
Un índice es la mejor herramienta para que la base de datos utilice la unicidad en los datos de una columna. Cada vez que una aplicación agrega o modifica una fila en la tabla, la base de datos debe buscar todos los registros existentes para garantizar que ninguno de los valores en los datos nuevos duplique los valores existentes. En definitiva son la mejor forma de mejorar el desempeño en la BD y por ende del sistema de información.
Conceptos básicos
Desventajas
Los índices se almacenan en el disco y la cantidad de espacio requerido dependerá del tamaño de la tabla y del número y tipo de columnas utilizados en el índice. El espacio en disco generalmente es lo suficientemente barato como para intercambiarlo por el rendimiento de la aplicación, particularmente cuando una base de datos sirve a una gran cantidad de usuarios.
Si los datos se modifican en intervalos regulares, entonces el motor de base de datos requiere actualizar todos los índices, por lo tanto, demasiados índices ralentizarán el rendimiento.
Otra consideración es que si actualizamos un registro y cambiamos el valor de una columna indexada en un índice agrupado, la base de datos podría necesitar mover toda la fila a una nueva posición para mantener las filas ordenadas. Este comportamiento esencialmente convierte una consulta de actualización en un DELETE seguido de un INSERT, con una evidente disminución en el rendimiento. La desventaja de un índice no agrupado es que es un poco más lento que un índice agrupado y puede ocupar bastante espacio en el disco.
Conceptos básicos
Consideraciones para crear índices
A la hora de definir y crear índices se deben de tener en cuenta ciertas consideraciones:
Los sistemas de información tienen un mejor desempeño cuando contienen tablas organizadas por índices. Las aplicaciones en las que las tablas organizadas por índice son apropiadas incluyen los siguientes aspectos (Microsoft, 2017), que se encuentran en el gráfico que acompaña esta pantalla.
Tipos de índices
PostgreSQL ofrece varios tipos de índices: B-tree, hachís, Gist, SP-GIST y ginebra. Cada tipo de índice utiliza un algoritmo diferente que mejor se adapta a diferentes tipos de consultas. Por defecto, el comando CREATE INDEX crea índices de árbol B, que se adaptan a las situaciones más comunes (postgresql.org, 2017).
Tipos de índices
Índice simple y compuesto
Los índices se basan en una o más columnas de una tabla; cada índice mantiene una lista de valores dentro de ese campo que están ordenados en orden ascendente o descendente. En lugar de ordenar registros en el campo o los campos durante la ejecución de la consulta, el sistema simplemente puede acceder a las filas en orden del índice.
Una primera división de los tipos de índices son Simples y Compuestos: En los primeros, se define la estructura de datos sobre una sola columna, mientas que en los segundos se combinan 2 o más columnas para aplicar la estructura de datos.
Dentro de los índices también encontramos un concepto denominado Índices únicos y no únicos.
Tipos de índices
Índice agrupado y no agrupado
En una tabla o vista podemos encontrar índices agrupados y no agrupados.
Un índice agrupado es un tipo especial de índice que reordena la forma en que los registros de la tabla se almacenan físicamente. Por lo tanto, la tabla solo puede tener un índice agrupado. Los nodos hoja de un índice agrupado contienen las páginas de datos.
Un índice no agrupado es un tipo especial de índice en el que el orden lógico del índice no coincide con el orden físico almacenado de las filas en el disco. El nodo hoja de un índice no agrupado no consta de las páginas de datos. En cambio, los nodos hoja contienen filas de índice.
Tipos de índices
Índices en PostgreSQL
En PostgreSql podemos encontrar varios tipos de índices, útiles para diferentes situaciones. Entre los principales encontramos los siguientes: B-tree, hachís, Gist, SP-GIST y ginebra. Cada uno de ellos utiliza diferentes tipos de algoritmos para realizar las inserciones, búsquedas y eliminaciones (postgresql.org, 2017).
Para ilustrar la forma de crear índices en PostgresSQL seguiremos las siguientes instrucciones para ingresar el PGAdmin y crear una tabla llamada EMPLEADO sobre la cual se desarrollarán los diferentes ejercicios prácticos para la creación y gestión de índices (postgresql.org, 2017).
Actividad de aprendizaje
![]() |
Pon a prueba lo estudiado acerca de los índices, relacionando sus principales conceptos. |
Técnicas para el monitoreo y supervisión
La supervisión del rendimiento de la base de datos es el acto de medir el rendimiento de una base de datos determinada en tiempo real para especificar problemas y otros factores que pueden causar contratiempos en el futuro. También es una buena forma de determinar qué áreas de la base de datos se pueden mejorar u optimizar para aumentar la eficiencia y el rendimiento.
En PostgreSql podemos utilizar ciertas tablas que nos permitirán supervisar la actividad del motor, este monitoreo permitirá detectar entre otras cosas posible bloqueos (Postgresql, 2017).
A continuación, se presentan algunas de ellas:
Actividad de aprendizaje
![]() |
De acuerdo a lo estudiado, resuelve la siguiente actividad para crear un índice parcial. |
Resumen
Durante la tercera unidad, revisamos todos los conceptos básicos y avanzados sobre la creación y gestión de índices, así como la verificación de las consultas mediante la utilización de cláusulas para revisar el plan de ejecución.
En ésta unidad se describió la estructura de los índices y se explicó las principales recomendaciones para su creación. Un tema importante fue la identificación de campos en la cláusula WHERE ya que tiene un gran impacto porque los campos sobre los cuales se realicen búsquedas simples o combinadas serán los más aptos para crear índices sobre ellos.
Caso de estudio
Evalúa lo aprendido desarrollando este caso de estudio, en el cual se necesita realizar una gestión de matrículas.
Bibliografía ()
Referencias Web
- Arambarris, J. (2016). Lenguaje de Consulta Estructurada (SQL). [online] Info3sql.blogspot.com.co. Disponible en: http://info3sql.blogspot.com.co/2016/04/sql-structured-query-language-es-un.html
- Carmenq27.blogspot.com.co. (2013). Implementación. [online] Disponible en: http://carmenq27.blogspot.com.co/p/implementacion_13.html
- Clusterinformatica.blogspot.com.co. (2011). Cluster (informática). [online] Disponible en: http://wwwclusterinformatica.blogspot.com.co/2011/05/cluster-informatica.html
- Conceptodefinicion.de. (2014). ¿Qué es Indexación? - Su Definición, Concepto y Significado. [online] Disponible en: http://conceptodefinicion.de/indexacion/
- Heredia Mayer, J. (2014). Clustered y Non Clustered Index en SQL Server - Espacio Digital. [online] Infoinnova.net. Disponible en: https://infoinnova.net/2014/06/clustered-y-non-clustered-index-en-sql-server/
- Msdn.microsoft.com. (2016). Guía de diseño de índices de SQL Server. [online] Disponible en: https://msdn.microsoft.com/es-es/library/jj835095(v=sql.120).aspx
- Ocaña, D. (2012). Definicion de campo registro base de datos datawarehouse. [online] Estructura-davomtz92.blogspot.com.co. Disponible en: http://estructura-davomtz92.blogspot.com.co/2012/10/definicion-de-campo-registro-base-de.html
- Postgresql.org. (n.d.). PostgreSQL: Documentation: 9.2: The Statistics Collector. [online] Disponible en: https://www.postgresql.org/docs/9.2/static/monitoring-stats.html
- Postgresql.org. (n.d.). PostgreSQL: Documentation: 9.5: Index Types. [online] Disponible en: https://www.postgresql.org/docs/9.5/static/indexes-types.html
- Shaw, G. (2009). BD2 - Introducción a los Índices. [online] Cátedra de Base de Datos. Disponible en: https://bdatos.wordpress.com/2012/06/02/bd2-introduccion-a-los-indices/
- Technet.microsoft.com. (n.d.). Conceptos básicos de los índices. [online] Disponible en: https://technet.microsoft.com/es-es/library/ms190457(v=sql.105).aspx
- Wikilengua.org. (2015). Índice - Wikilengua. [online] Disponible en: http://www.wikilengua.org/index.php/%C3%8Dndice
- Winand, M. (s.f.). El árbol de búsqueda equilibrado (B-Tree) en las bases de datos SQL. [online] Use-the-index-luke.com. Disponible en: http://use-the-index-luke.com/es/sql/i%CC%81ndice-anatomi%CC%81a/b-tree





