Los sistemas de gestión de bases de datos proporcionan varios tipos de índices para mejorar el rendimiento y la integridad de los datos en diversas aplicaciones. Los tipos de índice incluyen árboles b , mapas de bits y árboles r .
En los sistemas de administración de bases de datos, una estrategia de índice de clave inversa invierte el valor de la clave antes de ingresarlo en el índice . [1] Por ejemplo, el valor 24538 se convierte en 83542 en el índice. La inversión del valor de clave es particularmente útil para indexar datos como números de secuencia , donde cada nuevo valor de clave es mayor que el valor anterior, es decir, los valores aumentan monótonamente. Los índices de clave inversa se han vuelto particularmente importantes en los sistemas de procesamiento de transacciones de alto volumen porque reducen la contención por bloques de índices .
Creando datos
Los índices de clave invertidos utilizan estructuras de árbol b , pero procesan previamente los valores de clave antes de insertarlos. Simplificando, los árboles b colocan valores similares en un solo bloque de índice, por ejemplo, almacenando 24538 en el mismo bloque que 24539. Esto los hace eficientes tanto para buscar un valor específico como para encontrar valores dentro de un rango. Sin embargo, si la aplicación inserta valores en secuencia, cada inserción debe tener acceso al bloque más nuevo del índice para poder agregar el nuevo valor. Si muchos usuarios intentan insertar al mismo tiempo, todos deben escribir en ese bloque y tener que ponerse en línea, lo que ralentiza la aplicación. Esto es particularmente un problema en las bases de datos agrupadas , que pueden requerir que el bloque se copie de la memoria de una computadora a la de otra para permitir que el siguiente usuario realice su inserción.
Al invertir la clave, se propagan nuevos valores similares en todo el índice en lugar de concentrarlos en cualquier bloque de hoja. Esto significa que 24538 aparece en el mismo bloque que 14538 mientras que 24539 va a un bloque diferente, eliminando esta causa de contención . (Dado que 14538 se habría creado mucho antes que 24538, sus inserciones no interfieren entre sí).
Consulta de datos
Los índices inversos son tan eficientes como los índices no invertidos para encontrar valores específicos, aunque no son útiles para consultas de rango. Las consultas de rango son poco comunes para valores artificiales como números de secuencia. Al buscar en el índice, el procesador de consultas simplemente invierte el objetivo de búsqueda antes de buscarlo.
Borrando datos
Por lo general, las aplicaciones eliminan los datos que son más antiguos en promedio antes de eliminar los datos más nuevos. Por lo tanto, los datos con números de secuencia más bajos generalmente van antes que aquellos con valores más altos. A medida que pasa el tiempo, en los árboles b estándar , los bloques de índice para valores más bajos terminan conteniendo pocos valores, con un aumento proporcional en el espacio no utilizado, denominado "rot". Rot no solo desperdicia espacio, sino que ralentiza la velocidad de las consultas, porque una fracción más pequeña de los bloques de un índice podrido cabe en la memoria en cualquier momento. En un árbol b, si se elimina 14538, su espacio de índice permanece vacío. En un índice inverso, si 14538 va antes de que llegue 24538, 24538 puede reutilizar el espacio de 14538.
Ver también
Notas al pie
- ^ "Introducción a los índices de clave inversa: parte I" . Blog de Oracle de Richard Foote . 2008-01-14 . Consultado el 13 de abril de 2019 .
enlaces externos
- "Técnicas de diseño de bases de datos" . docs.oracle.com . Consultado el 13 de abril de 2019 .