Compartir a través de


Desfragmentación de índices para las bases de datos de Project Server 2010

 

Se aplica a: Project Server 2010

Última modificación del tema: 2016-11-30

Las tareas de mantenimiento de las bases de datos pueden realizarse mediante comandos de Transact-SQL o con el asistente para el mantenimiento de bases de datos. En este artículo, hallará información acerca de ambos métodos.

Las tareas de mantenimiento recomendadas en Microsoft Project Server 2010 para las bases de datos son las siguientes:

  • Comprobación de la integridad de la base de datos

  • Desfragmentación de los índices mediante su reorganización o regeneración

  • Configuración del factor de relleno para un servidor

  • Supervisión del tamaño de la base de datos para ampliar anticipadamente o reducir el tamaño de las bases de datos

  • Limpieza del historial

  • Actualización de las estadísticas

Desfragmentación de los índices mediante su reorganización o regeneración

La fragmentación se produce cuando la asignación de almacenamiento lógico o físico de una base de datos contiene muchas áreas de almacenamiento dispersas que son insuficientes, no son físicamente contiguas o están demasiado fragmentadas para usarlas de modo eficaz. La fragmentación puede ser consecuencia de realizar muchas inserciones, actualizaciones o eliminaciones en una tabla. Cuando una tabla está fragmentada, los índices definidos en la tabla también se fragmentan.

Project Server 2010 usa tipos de GUID como claves de agrupación en clústeres, que impiden que inserciones simultáneas compitan por las mismas páginas de datos (zonas activas de inserción), pero, al mismo tiempo, pueden ser una causa de la fragmentación de la tabla o del índice. La fragmentación puede producirse porque los nuevos registros pueden insertarse en cualquier parte del árbol b, en lugar de al final, lo que produce una mayor tendencia a la división de las páginas (índice y datos) y, por consiguiente, a su fragmentación. Para mitigar este efecto, se agrupan en clústeres las claves compuestas que usan el UID del proyecto para garantizar que las páginas de datos contengan datos relacionados; no obstante la desfragmentación regular de las tablas más grandes mejorará el rendimiento, especialmente en implementaciones grandes de Project Server 2010.

Con el tiempo, la fragmentación de la base de datos puede provocar una reducción del rendimiento (actividad de disco innecesaria) y un uso poco eficaz del espacio. Para mitigar la fragmentación y reducir la frecuencia con que se produce la fragmentación, establezca manualmente el mayor tamaño posible para las bases de datos de contenido en función de sus requisitos empresariales y de la arquitectura de las bases de datos. Por ejemplo, si debe limitar las bases de datos de contenido a 100 gigabytes (GB), una vez creadas las bases de datos de contenido, establezca su tamaño en 100 GB en SQL Server Management Studio.

Aunque las tablas pueden desfragmentarse, la desfragmentación de índices ofrece más ventajas para el rendimiento de las bases de datos y es mucho más rápida. En este artículo, sólo se describe cómo desfragmentar los índices.

Antes de implementar un plan de mantenimiento de fragmentación de bases de datos, determine qué tablas e índices están más fragmentados y cree un plan de mantenimiento para regenerar o reorganizar los índices.

Medición de la fragmentación con sys.dm_db_index_physical_stats

Use la vista de administración dinámica sys.dm_db_index_physical_stats para determinar la fragmentación de los índices en una tabla o vista especificada.

Para medir la fragmentación, se recomienda que supervise la columna avg_fragmentation_in_percent. El valor de avg_fragmentation_in_percent debe ser lo más próximo posible a cero para obtener el máximo rendimiento. No obstante, pueden aceptarse valores de 0% a 10%.

Para obtener información acerca del uso de sys.dm_db_index_physical_stats, vea el tema sobre sys.dm_db_index_physical_stats (Transact-SQL) (https://technet.microsoft.com/es-es/library/ms188917.aspx)

Reducción de la fragmentación de una base de datos

Para obtener información acerca de cómo reducir la fragmentación de una base de datos, vea la sección sobre medición y reducción de la fragmentación de las notas del producto relacionadas con el mantenimiento de las bases de datos de los productos Microsoft SharePoint 2010. Puede descargar estas notas del producto de Mantenimiento de bases de datos para SharePoint Server 2010.

Reducción de la fragmentación de una tabla específica y sus índices

Si desea desfragmentar el índice que está asociado a una tabla determinada en lugar de una base de datos completa, puede reorganizar o regenerar el índice. Para obtener más información, vea el tema sobre las estructuras de índices clúster (https://technet.microsoft.com/es-es/library/ms177443.aspx).

Reorganizar un índice significa reorganizar el nivel hoja del índice. La reorganización de índices desfragmenta y compacta los índices clúster y los índices no agrupados de las tablas y las vistas, y puede mejorar significativamente el rendimiento del exámen del índice. La reorganización siempre se realiza con conexión para que la tabla subyacente esté disponible para los usuarios.

Regenerar un índice significa que el índice se volverá a generar con las mismas columnas, tipo de índice, atributo de exclusividad y criterio de ordenación. La regeneración mejora el rendimiento de los exámenes y búsquedas de índice. El índice se puede regenerar con una tabla con o sin conexión.

El nivel de fragmentación de un índice determina el método que se debe usar para desfragmentarlo y si puede permanecer con conexión o se debe poner sin conexión.

Nivel de fragmentación Método de desfragmentación

Hasta 10%

Reorganizar (con conexión)

Entre 10% y 75%

Regenerar (con conexión)

Más de 75%

Regenerar (sin conexión)

Tenga en cuenta que no se admite el uso de los comandos DROP INDEX y CREATE INDEX en las bases de datos de Microsoft SharePoint Server 2010.

Uso de ALTER INDEX

ALTER INDEX permite a un administrador de la base de datos realizar operaciones de mantenimiento en un índice de tabla o vista existente. Se puede usar para deshabilitar, regenerar y reorganizar los índices u, opcionalmente, las opciones de configuración del índice.

En la mayoría de los casos, los índices se pueden regenerar mientras la base de datos está conectada porque no hay mejoras importantes cuando se regeneran los índices sin conexión. Sin embargo, es importante tener en cuenta que cuando se regenera un índice, se coloca un bloqueo de tabla compartida en la tabla, que impide realizar cualquier operación excepto las operaciones SELECT. Las bases de datos de SharePoint Server 2010 usan específicamente índices clúster. Cuando se regenera un índice clúster, se coloca un bloqueo de tabla exclusiva en la tabla, que impide que los usuarios finales tengan acceso a esta.

Puede personalizar el script de ejemplo siguiente para regenerar todos los índices de una tabla.

USE Contoso_Content_1
GO
ALTER INDEX ALL ON [database_name. [ schema_name ] . | schema_name. ]table_or_view_name
REBUILD WITH (FILLFACTOR = 70, SORT_IN_TEMPDB = ON, ONLINE = ON,
STATISTICS_NORECOMPUTE = ON)
GO

Consideraciones especiales para la base de datos de informes

Como se espera que los clientes implementen informes personalizados basados en campos personalizados y en datos disponibles en la base de datos de informes, se aconseja realizar los procedimientos recomendados siguientes para la escritura de T-SQL y la creación de índices con el fin de garantizar una solución de informes escalable y eficaz. Project Server 2010 no indiza estas tablas (generadas dinámicamente) fuera de la clave principal.

Cuando se trabaja con el soporte técnico y el servicio al cliente de Microsoft, es posible que un ingeniero de soporte técnico le pida que quite los índices adicionales creados o que quite las columnas adicionales agregadas a los índices existentes. Esto es debido a que los índices adicionales pueden cambiar las rutas de acceso a los datos y, en algunos casos, provocar un rendimiento inesperado y problemas de bloqueo y desbloqueo.

Configuración del factor de relleno para un servidor

El factor de relleno sirve para mejorar aún más el almacenamiento y el rendimiento de los datos de índice. Cuando los índices se crean o se regeneran, el factor de relleno (de 1 a 100) determina el porcentaje de espacio de cada página de nivel hoja que se puede rellenar con datos. El espacio restante se reserva para un futuro crecimiento. En muchas ocasiones, el valor predeterminado 0 del nivel de factor de relleno de todo el servidor resulta adecuado. Sin embargo, en SharePoint Server 2010, el valor adecuado para todo el servidor es 70, para permitir el crecimiento y reducir la fragmentación.

Aunque es posible, no se recomienda establecer el factor de relleno para tablas o índices específicos.

Para ver el valor del factor de relleno de algunos índices, consulte la vista de catálogo sys.indexes. Para obtener más información acerca de la vista, vea el tema sobre sys.indexes (Transact-SQL) (https://technet.microsoft.com/es-es/library/ms173760.aspx).

Para configurar el valor del factor de relleno de todo el servidor, use el procedimiento almacenado del sistema sp_configure. Para obtener más información, vea el tema sobre sp_configure (Transact-SQL) (https://technet.microsoft.com/es-es/library/ms188787.aspx).