sql >> Base de Datos >  >> RDS >> Sqlserver

Administración de índices de SQL Server mediante Index Manager para SQL Server

Descripción general del índice de SQL Server

Cuando se habla del ajuste del rendimiento de SQL Server y la mejora de las consultas, lo primero que se debe tener en cuenta es el índice de SQL Server. Sirve para acelerar la lectura de datos de las tablas subyacentes al proporcionar acceso rápido a las filas solicitadas. Por lo tanto, no necesitará escanear todos los registros de la tabla.

El índice de SQL Server proporciona esas capacidades de búsqueda rápida debido a la estructura B-Tree del índice. Esta estructura hace posible moverse rápidamente a través de las filas de la tabla en función de la clave de índice y recuperar los registros solicitados a la vez. No necesitará leer toda la tabla.

Tipos de índices de SQL Server

Entre los principales tipos, prestamos atención a los índices agrupados y no agrupados.

El índice agrupado ordena los datos reales en las páginas de datos de acuerdo con los valores clave del índice agrupado. Almacena los datos en el nivel de "hoja" del índice, lo que garantiza la posibilidad de crear solo un índice agrupado en cada tabla. El índice agrupado se crea automáticamente cuando aparece una restricción de clave principal en la tabla del montón.

El índice no agrupado contiene el valor de la clave de índice y un puntero al resto de las columnas de la fila en la tabla principal. Es el nivel de "hoja" del índice, con la capacidad de crear hasta 999 índices no agrupados en cada tabla.

Si su tabla no tiene un índice agrupado creado en ella, la tabla se denomina "tabla de montón". Dicha tabla no tiene criterios para especificar el orden de los datos dentro de las páginas y la clasificación y vinculación de las páginas.

Cuando se crea un índice agrupado en esa tabla, llamamos a la tabla ordenada tabla agrupada.

También hay otros tipos de índices proporcionados por SQL Server:

  • El índice Único impone la exclusividad de los valores de columna;
  • El índice de cobertura contiene todas las columnas solicitadas por la consulta;
  • El índice compuesto contiene varias columnas en la clave del índice;
  • Otros tipos de índices particulares son los índices XML, espacial y de almacén de columnas.

La ventaja del índice de SQL Server es que mejora el rendimiento de las consultas. Sin embargo, funciona si solo el índice es correcto. Si lo diseña mal, afectará negativamente el rendimiento de las consultas y consumirá los recursos de SQL Server para almacenar y mantener índices inútiles.

Elegir el mejor índice que solucione todos los problemas no es una tarea fácil. Agregar un nuevo índice puede acelerar el proceso de recuperación de datos, pero ralentiza los procesos de modificación de datos. Cualquier cambio realizado en la tabla subyacente se refleja directamente en todos los índices relacionados para mantener la coherencia de los datos.

Es por eso que debe estudiar y probar el impacto del nuevo índice antes de crearlo en el entorno de producción. También es necesario monitorear su impacto y uso después de implementarlo en el entorno de producción.

Factores a considerar al diseñar un nuevo índice de SQL Server

El primer factor es el tipo de carga de trabajo de la base de datos . Supongamos que tratamos con una carga de trabajo OLTP con una gran cantidad de operaciones de escritura. Requiere el menor número posible de índices. Otro caso es una carga de trabajo OLAP con muchas operaciones de lectura:exigirá tantos índices como sea posible para acelerar la recuperación de datos.

Además, debe mirar el tamaño de la tabla . SQL Server Engine prefiere escanear la tabla subyacente directamente, en lugar de perder tiempo y recursos eligiendo el mejor índice para la recuperación de datos de esa pequeña tabla.

Una vez que haya decidido crear un índice en esa tabla, debe identificar el tipo de índice para atender su consulta . Allí, especifica las columnas agregadas a la clave de índice. Las bases son el tipo de datos de la columna y la posición en los predicados de la consulta y las condiciones de combinación.

Estos factores deberían garantizar el mejor rendimiento de recuperación de datos, en el orden correcto, y mantener el índice lo más corto y simple posible.

Otro factor a tener en cuenta al diseñar un nuevo índice es el almacenamiento del índice. . Se recomienda crear índices no agrupados en un grupo de archivos y una unidad de disco separados. De esta forma, aísla las operaciones de E/S realizadas en las páginas de datos de índice de los archivos de datos de la base de datos.

Considere establecer el índice FACTOR DE RELLENO , que determina el porcentaje de espacio en cada página de nivel de hoja llena de datos (el valor difiere del 0 o 100 por ciento predeterminado). El objetivo es dejar espacio en cada página de datos de índice para los registros recién insertados o actualizados. También minimiza la ocurrencia de división de páginas que podría conducir al problema de fragmentación del índice.

Gestión de índices

El papel del administrador de la base de datos en la mejora del rendimiento de las consultas con los índices de SQL Server no se limita a la creación del índice. Debe monitorear proactivamente el uso del índice para identificar su calidad. Además, necesitamos mantener el índice regularmente para solucionar los problemas de fragmentación.

SQL Server Management Studio, con su robusta funcionalidad de generación de informes, proporciona los datos estadísticos más útiles para los administradores de bases de datos. Uno de estos informes integrados es Estadísticas de uso del índice. :

El informe Estadísticas de uso del índice describe cómo se utilizan los índices de la base de datos en forma de:

  • Busca :el número de veces que SQL Engine usa el índice para encontrar una fila específica.
  • Escaneos :el número de veces que SQL Engine analiza las páginas de hoja de índice.
  • Búsquedas :el número de veces que se utilizó un índice no agrupado como índice agrupado para recuperar el resto de las columnas que no figuran en el índice no agrupado.
  • Actualizaciones :el número de veces que se modifican los datos del índice.

Tenga en cuenta que el objetivo principal de la creación del índice es realizar una operación de búsqueda de índice, como se muestra a continuación:

El informe anterior ayuda significativamente a especificar si SQL Server aprovecha estos índices para acelerar el proceso de recuperación de datos o no. Si resulta que algún índice en particular no funciona como debería, suéltelo y reemplácelo por uno mejor.

El segundo informe proporcionado por el SSMS es el Índice de estadísticas físicas. . Devuelve la información estadística sobre el porcentaje de fragmentación del índice por cada partición de índice, con el número de páginas en cada partición de índice.

También recomienda cómo solucionar los problemas de fragmentación del índice reconstruyendo o reorganizando ese índice, según el porcentaje de fragmentación, como se muestra a continuación:

Para aplicar las recomendaciones proporcionadas por el informe, puede ejecutar el comando de desfragmentación de índices para cada índice. O bien, puede crear un plan de mantenimiento utilizando SSMS para mantener el índice de la mejor manera.

Administrador de índices de dbForge

dbForge Index Manager es un complemento de SSMS que sirve para detectar y corregir los problemas de fragmentación de índices de SQL Server.

También es una herramienta centralizada que brinda la capacidad de detectar el porcentaje de fragmentación del índice en las bases de datos. Puede solucionar estos problemas realizando una reconstrucción del índice. Otra forma es reorganizar las operaciones, basándose en la severidad de fragmentación de ese índice. Entre otras opciones, está la generación de scripts T-SQL para la ejecución de comandos relacionados con el índice, la exportación de los resultados del análisis del índice para referencia posterior y el uso de la interfaz de línea de comandos para automatizar las tareas de mantenimiento del índice.

dbForge Index Manager está disponible en la página de descarga de Devart. Puede instalarlo en su máquina utilizando un asistente de instalación sencillo. Después de la instalación exitosa, este complemento está listo para usarse.

Para usarlo dentro del SSMS, haga clic con el botón derecho en la base de datos y seleccione Administrar fragmentación de índice. de la lista de Index Manager:

Desde la ventana de Index Manager, puede filtrar el nombre de la base de datos que le interese.

Haga clic en Volver a analizar para realizar la verificación de fragmentación del índice para la base de datos seleccionada. Muestra automáticamente las estadísticas de fragmentación de índices para todos los índices creados en la base de datos seleccionada durante este proceso.

La herramienta Index Manager también recomienda las acciones para corregir los problemas de fragmentación del índice, según el porcentaje de fragmentación:

Verificar los índices en la sección Acciones requeridas en la ventana anterior hace posible exportar la lista de acciones como un informe CSV. Le permite realizar la solución sugerida reorganizando o reconstruyendo índices problemáticos directamente desde esa página o generando un script para hacerlo más tarde:

La corrección de la fragmentación del índice en nuestro escenario será la siguiente:

Si ejecuta el script anterior o hace clic en Reparar y luego Volver a analizar el resultado, ves que el problema de fragmentación se soluciona directamente:

De esta manera, aprovechamos dbForge Index Manager para analizar e identificar los problemas de fragmentación del índice y luego informarlos o solucionarlos directamente desde el mismo lugar.

Herramienta útil

dbForge Index Manager lleva la corrección inteligente de índices y la fragmentación de índices directamente a SSMS. La herramienta le permite recopilar rápidamente estadísticas de fragmentación de índices y detectar bases de datos que requieren mantenimiento. Puede reconstruir y reorganizar instantáneamente los índices de SQL Server en modo visual o generar secuencias de comandos SQL para uso futuro. dbForge Index Manager para SQL Server aumentará significativamente su rendimiento sin mucho esfuerzo.