Compartir a través de


Índices de función hash

Los índices se usan como puntos de entrada para tablas optimizadas para memoria. La lectura de filas de una tabla requiere un índice para localizar los datos en la memoria.

Un índice hash consta de una colección de cubos organizados en una matriz. Una función hash asigna claves de índice a los compartimentos correspondientes del índice hash. En la ilustración siguiente se muestran tres claves de índice que se asignan a tres cubos diferentes en el índice hash. Con fines ilustrativos, el nombre de la función hash es f(x).

Claves de índice asignadas a cubos diferentes.

La función hash usada para los índices hash tiene las siguientes características:

  • SQL Server tiene una función hash que se usa para todos los índices hash.

  • La función hash es determinista. La misma clave de índice siempre se asigna al mismo cubo del índice hash.

  • Se pueden asignar varias claves de índice al mismo cubo hash.

  • La función hash está equilibrada, lo que significa que la distribución de valores de clave de índice a través de cubos hash suele seguir una distribución de Poisson.

    La distribución de Poisson no es una distribución uniforme. Los valores de clave de índice no se distribuyen uniformemente en los cubos hash. Por ejemplo, una distribución de Poisson de n claves de índice distintas sobre n cubos hash da como resultado aproximadamente un tercio de los cubos vacíos, un tercio de los cubos que contienen una clave de índice y el otro tercio que contiene dos claves de índice. Un pequeño número de cubos contendrá más de dos claves.

Si se asignan dos claves de índice al mismo cubo hash, hay una colisión de hash. Un gran número de colisiones de hash puede tener un impacto en el rendimiento de las operaciones de lectura.

La estructura de índice hash en memoria consta de una matriz de punteros de memoria. Cada cubo se asigna a un desplazamiento en esta matriz. Cada cubo de la matriz apunta a la primera fila de ese cubo hash. Cada fila del cubo apunta a la siguiente fila, lo que da como resultado una cadena de filas para cada cubo hash, como se muestra en la ilustración siguiente.

Estructura de índice hash en memoria.

La figura tiene tres cubos con filas. El segundo cubo de la parte superior contiene las tres filas rojas. El cuarto cubo contiene la única fila azul. El cubo inferior contiene las dos filas verdes. Pueden ser versiones diferentes de la misma fila.

Para obtener más información sobre los índices de las tablas optimizadas para memoria, vea Directrices para usar índices en tablas de Memory-Optimized.

Véase también

Índices en tablas de Memory-Optimized