Agradecemos tu ayuda para extender nuestros tutoriales sobre las ciencias de la computación.
Solución:
Solo puede acceder a los elementos por su principal key en una tabla hash. Esto es más rápido que con un algoritmo de árbol (O(1)
en vez de log(n)
), pero no puede seleccionar rangos (todo en el medio x
y y
). Los algoritmos de árbol admiten esto en Log(n)
mientras que los índices hash pueden dar como resultado un escaneo completo de la tabla O(n)
. Además, la sobrecarga constante de los índices hash suele ser mayor (que no es un factor en la notación theta, pero todavía existe). Además, los algoritmos de árbol suelen ser más fáciles de mantener, crecen con datos, escala, etc.
Los índices hash funcionan con tamaños hash predefinidos, por lo que termina con algunos “cubos” donde se almacenan los objetos. Estos objetos se repiten nuevamente para encontrar realmente el correcto dentro de esta partición.
Entonces, si tiene tamaños pequeños, tiene muchos gastos generales para elementos pequeños, los tamaños grandes dan como resultado un escaneo adicional.
Los algoritmos de tablas hash actuales suelen escalar, pero el escalado puede ser ineficiente.
De hecho, existen algoritmos hash escalables. No me preguntes cómo funciona eso, también es un misterio para mí. AFAIK, evolucionaron a partir de la replicación escalable donde volver a hacer hash no es fácil.
Se llama CORRER – Rduplicación tubajo Scalificable Hparpadeando, y esos algoritmos se llaman algoritmos RUSH.
Sin embargo, puede haber un punto en el que su índice exceda un tamaño tolerable en comparación con sus tamaños de hash y su índice completo deba reconstruirse. Por lo general, esto no es un problema, pero para bases de datos enormes, enormes, esto puede llevar días.
La compensación por los algoritmos de árbol es pequeña y son adecuados para casi todos los casos de uso y, por lo tanto, son predeterminados.
Sin embargo, si tiene un caso de uso muy preciso y sabe exactamente qué y solo qué se necesitará, puede aprovechar los índices hash.
En realidad, parece que MySQL usa ambos tipos de índices, ya sea una tabla hash o un árbol b, según el siguiente enlace.
La diferencia entre usar un árbol b y una tabla hash es que el primero te permite usar comparaciones de columnas en expresiones que utilizan los operadores =, >, >=, <, <= o BETWEEN, mientras que este último se utiliza solo para comparaciones de igualdad que usan = o <=> operadores.
La complejidad temporal de las tablas hash es constante solo para tablas hash de tamaño suficiente (es necesario que haya suficientes cubos para almacenar los datos). El tamaño de una tabla de base de datos no se conoce de antemano, por lo que la tabla se debe rehacer de vez en cuando para obtener un rendimiento óptimo de una tabla hash. El refrito también es caro.
Aquí puedes ver las reseñas y valoraciones de los lectores
Al final de la página puedes encontrar las notas de otros gestores de proyectos, tú aún tienes la habilidad dejar el tuyo si te apetece.