¿Qué tan importante es la indexación y la indexación en clúster para el rendimiento de la base de datos?

StackOverflow https://stackoverflow.com/questions/403393

  •  03-07-2019
  •  | 
  •  

Pregunta

Recientemente ha habido varias preguntas sobre la indexación de bases de datos y la indexación en clúster y ha sido algo nuevo para mí hasta las últimas dos semanas. Me preguntaba qué tan importante es y qué tipo de ganancias de rendimiento se pueden esperar de su creación.

Editar: ¿Cuál es generalmente el mejor tipo de campos a tener en cuenta al colocar un índice agrupado cuando recién comienza?

¿Fue útil?

Solución

Muy muy A ( G , G ) importante . En mi opinión, la indexación inteligente es lo más importante en la optimización del rendimiento de la base de datos.

Este no es un tema fácil de cubrir en una sola respuesta. Una buena indexación requiere el conocimiento de las consultas que sucederán en la base de datos, realizar una gran cantidad de compensaciones y comprender la implicación de un índice específico en el motor de base de datos específico. Pero es muy importante, sin embargo.

EDITAR: Básicamente, los índices agrupados generalmente deben tener longitudes cortas. Deben crearse en consultas que reflejen un rango. No deben tener entradas duplicadas. Pero estas pautas son muy generales y de ninguna manera son las correctas. Lo correcto es analizar las consultas que se ejecutarán. Evalúe y analice cuidadosamente los planes de ejecución y comprenda cuál es la mejor manera de hacerlo. Esto requiere años de experiencia y conocimiento y de ninguna manera es algo para explicar en un solo párrafo. ¡Es lo principal que hace que los expertos de DB sean expertos (no es lo único, pero es primitivo para otras cosas importantes, como problemas de concurrencia, disponibilidad, ...)!

Otros consejos

Indexación: extremadamente importante. Tener los índices incorrectos dificulta las consultas, a veces hasta el punto de que no se pueden completar en un tiempo razonable.

Los índices también afectan el rendimiento de la inserción y el uso del disco (negativamente), por lo que mantener muchos índices superfluos en tablas grandes también es una mala idea.

La agrupación es algo en lo que vale la pena pensar, creo que realmente depende del comportamiento de la base de datos específica. Si puede agrupar sus datos correctamente, puede reducir drásticamente la cantidad de IOP necesarios para satisfacer las solicitudes de filas que no están en la memoria.

Sin los índices adecuados, obliga al RDBMS a realizar escaneos de tabla para consultar cualquier cosa. Terriblemente ineficiente.

También inferiría que no tienes claves primarias, lo cual es un pecado capital en el diseño relacional.

La indexación es muy importante cuando la tabla contiene muchas filas.
Con unos pocos rws, el rendimiento es mejor sin índices.
Con tablas más grandes, los índices son muy importantes para obtener un buen rendimiento.
No es fácil definirlos. Agrupado significa que los datos se almacenan en el orden de índice agrupado.
Para obtener buenos indicios de índices, puede usar Toad

La indexación es de vital importancia .

El índice correcto para una consulta puede mejorar el rendimiento tan dramáticamente que puede parecer brujería .

Como han dicho las otras respuestas, la indexación es crucial.

Como se puede deducir de otras respuestas, la indexación en clúster es mucho menos crucial.

La indexación decente le brinda ganancias de rendimiento de primer orden; los órdenes de magnitud son comunes.

La indexación en clúster es una ganancia de rendimiento de segundo orden o incremental, que generalmente proporciona porcentajes pequeños (< 100%) de aumento del rendimiento.

(También nos hacemos preguntas sobre 'qué es una ganancia de rendimiento del 100%'; estoy interpretando el porcentaje como ((antiguo - nuevo tiempo) / nuevo tiempo) * 100, entonces si el tiempo anterior es de 10 segundos y el nuevo el tiempo es de 5 segundos, el aumento del rendimiento es del 100%).

Diferentes DBMS tienen diferentes interpretaciones de lo que significa un índice agrupado. Tener cuidado. En particular, algunos DBMS agrupan los datos una vez y después, la agrupación decae con el tiempo hasta que los datos se vuelven a agrupar. Otros tienen una visión más activa de la agrupación, creo.

El índice agrupado es usualmente pero no siempre su clave principal. Una forma de ver un índice agrupado es pensar en los datos que se ordenan físicamente en función de los valores del índice agrupado.

Es muy posible que este no sea el caso en realidad, sin embargo, el hecho de hacer referencia a los índices agrupados generalmente le ofrece los siguientes bonos de rendimiento de todos modos:

  1. Todas las columnas de la tabla son accesibles de forma gratuita cuando se resuelven desde un índice agrupado como si estuvieran contenidas dentro de un índice de cobertura. (Una consulta que se puede resolver utilizando solo los datos del índice sin tener que hacer referencia a las páginas de datos de la tabla en sí)

  2. Las operaciones de actualización se pueden realizar directamente contra un índice agrupado sin procesamiento intermedio. Si está realizando muchas actualizaciones en una tabla, normalmente desea hacer referencia a las columnas agrupadas.

  3. Dependiendo de la implementación, puede haber un beneficio de acceso secuencial donde los datos almacenados en el disco se recuperan más rápido con menos costosas operaciones de búsqueda de disco.

  4. Dependiendo de la implementación, puede haber un beneficio de índice gratuito cuando no es necesario un índice físico ya que el acceso a los datos se puede resolver mediante algoritmos simples de juego de adivinanzas.

No cuente con el n. ° 3 y especialmente con el n. ° 4. # 1 y # 2 son apuestas usualmente seguras en la mayoría de las plataformas RDBMS.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top