Mantenimiento de bases de datos para SharePoint Foundation 2010

 

Se aplica a: SharePoint Foundation 2010

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

Resumen:  obtenga información sobre cómo realizar el mantenimiento de las bases de datos que hospedan datos y valores de configuración para Productos de Microsoft SharePoint 2010. Lea instrucciones y ejemplos de estudio acerca de las estrategias y tareas de mantenimiento recomendadas para las bases de datos.

Se aplica a: Microsoft SharePoint Server 2010, Microsoft SharePoint Foundation 2010

Autores: Bill Baer y Bryan Porter

Revisor técnico: Paul S. Randal (SQLskills.com (en inglés))

Contenido

  • Introducción

  • Uso del comando CHECKDB de la consola de base de datos (DBCC) para comprobar los errores de coherencia

  • Acerca de DBCC CHECKDB

  • DBCC CHECKDB y rendimiento

  • Medición y reducción de la fragmentación de índices

  • Regeneraciones de índice en línea y sin conexión

  • Medición de la fragmentación en una base de datos SQL Server 2008 o 2005 (sys.dm_db_index_physical_stats)

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

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

  • Ajuste del rendimiento del índice mediante la configuración del factor de relleno

  • Reducción de archivos de datos

  • Creación de planes de mantenimiento de SQL Server 2008

  • Conclusión

Nota

Antes de implementar las tareas de mantenimiento de la base de datos o modificar las bases de datos de SharePoint 2010, lea Compatibilidad con los cambios a las bases de datos que utilizan productos de servidor de Office y Windows SharePoint Services.

Introducción

El mantenimiento periódico de las bases de datos es fundamental para el funcionamiento sin problemas de las bases de datos de Microsoft SharePoint 2010.

Las tareas de mantenimiento recomendadas para las bases de datos de SharePoint 2010 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

Nota

En este artículo se describe el mantenimiento de bases de datos. No se describe la planeación de la capacidad o el rendimiento. Para obtener información acerca de la planeación y capacidad, consulte Planeación y configuración del almacenamiento y capacidad de SQL Server (SharePoint Server 2010).

Aunque las versiones anteriores de los productos y las tecnologías de SharePoint requerían la intervención manual para realizar la desfragmentación de índices y el mantenimiento de estadísticas, en SharePoint 2010 varias reglas del analizador de mantenimiento de SharePoint automatizan este proceso. Estas reglas evalúan diariamente el estado de los índices y las estadísticas de las bases de datos y procesan automáticamente dichos elementos para las bases de datos siguientes:

  • Bases de datos de configuración

  • Bases de datos de contenido

  • Bases de datos de perfiles de la aplicación de servicio de perfiles de usuario

  • Bases de datos sociales de la aplicación de servicio de perfiles de usuario

  • Bases de datos de informes de aplicación del Servicio de Web Analytics

  • Bases de datos de ensayo de aplicación del Servicio de Web Analytics

  • Bases de datos de Word Automation Services

Las tareas de mantenimiento de base de datos se pueden realizar mediante la ejecución de comandos Transact-SQL o del Asistente de mantenimiento de bases de datos. En este artículo se describen los comandos Transact-SQL que puede usar y se explica cómo crear planes de mantenimiento de base de datos mediante el Asistente de mantenimiento de base de datos de Microsoft SQL Server. (Los ejemplos detallados son para Microsoft SQL Server 2008 R2 y Microsoft SQL Server 2005).

Uso del comando CHECKDB de la consola de base de datos (DBCC) para comprobar los errores de coherencia

Inicie las operaciones de mantenimiento habituales con comprobaciones de coherencia para asegurarse de que los datos e índices no estén dañados. Puede usar la sentencia CHECKDB de la consola de base de datos (DBCC) para realizar una comprobación de coherencia interna de las páginas de datos e índice.

La mayoría de los problemas de coherencia en las bases de datos resulta de errores del subsistema de E/S. Sin embargo, otros factores o eventos pueden afectar también a la coherencia de las bases de datos, por ejemplo, el apagado incorrecto de un servidor de base de datos o un error en una unidad de disco. Los problemas perceptibles de rendimiento y disponibilidad a veces pueden ser síntomas de problemas subyacentes de coherencia de base de datos. Realice comprobaciones de coherencia de base de datos al menos una vez por semana en las bases de datos de SharePoint 2010 y cada vez que se produzca un evento como, por ejemplo, errores del subsistema de E/S o del servidor de base de datos.

Acerca de DBCC CHECKDB

DBCC CHECKDB comprueba la integridad lógica y física de todos los objetos de la base de datos especificada al realizar las operaciones siguientes:

  • Ejecuta el equivalente de DBCC CHECKALLOC para comprobar las estructuras de asignación de la base de datos.

  • Ejecuta el equivalente de DBCC CHECKTABLE en todas las tablas y vistas de la base de datos para comprobar su integridad lógica y física.

  • Ejecutar el equivalente de DBCC CHECKCATALOG en la base de datos para comprobar la coherencia de los metadatos de la misma.

Es recomendable ejecutar DBCC CHECKDB en lugar de las operaciones individuales (comandos DBCC CHECKALLOC, DBCC CHECKTABLE y DBCC CHECKCATALOG), ya que DBCC CHECKDB identifica la gama más amplia de errores posibles y, por tanto, su ejecución es más segura en entornos de producción.

DBCC CHECKDB usa una gran cantidad de memoria, E/S y recursos de la CPU. En lugar de ejecutar DBCC CHECKDB en el sistema de producción, puede ejecutarlo en una copia de seguridad restaurada de las bases de datos de SharePoint en otro servidor. De este modo, la carga de trabajo de comprobación de la coherencia se puede desviar del sistema de producción.

Es recomendable que primero ejecute DBCC CHECKDB y, a continuación, si se encuentran problemas, restaure la base de datos afectada con las copias de seguridad más reciente.

Importante

No es posible ejecutar DBCC CHECKDB WITH REPAIR_ALLOW_DATA_LOSS. No obstante, puede ejecutar DBCC_CHECKDB WITH REPAIR_FAST y REPAIR_REBUILD, ya que estos comandos solo actualizan los índices de la base de datos asociada.

A continuación se proporcionan resultados de ejemplo de DBCC CHECKDB.

DBCC results for 'Contoso_Content_1'.
Service Broker Msg 9675, State 1: Message Types analyzed: 14.
Service Broker Msg 9676, State 1: Service Contracts analyzed: 6.
Service Broker Msg 9667, State 1: Services analyzed: 3.
Service Broker Msg 9668, State 1: Service Queues analyzed: 3.
Service Broker Msg 9669, State 1: Conversation Endpoints analyzed: 0.
Service Broker Msg 9674, State 1: Conversation Groups analyzed: 0.
Service Broker Msg 9670, State 1: Remote Service Bindings analyzed: 0.
DBCC results for 'sys.sysrowsetcolumns'.
There are 2663 rows in 21 pages for object "sys.sysrowsetcolumns".
DBCC results for 'sys.sysrowsets'.
There are 309 rows in 4 pages for object "sys.sysrowsets".

...more

CHECKDB found 0 allocation errors and 0 consistency errors in database 'Contoso_Content_1'.
DBCC execution completed. If DBCC printed error messages, contact your system administrator.

Para obtener más información acerca de cómo usar DBCC CHECKDB con SQL Server 2008, consulte DBCC CHECKDB (Transact-SQL).

DBCC CHECKDB y rendimiento

Es recomendable ejecutar comprobaciones de coherencia durante las horas fuera de producción, ya que DBCC CHECKDB usa un gran número de recursos (E/S, CPU, memoria y espacio tempdb). Hay una idea errónea de que DBCC CHECKDB adquiere bloqueos de bloque, pero esto no ha sido el caso desde antes de SQL Server 2000. Para obtener más información, consulte A SQL Server DBA myth a day: (2/30) DBCC CHECKDB causes blocking (en inglés).

Es posible que la ejecución de DBCC CHECKDB use demasiados recursos para el sistema de producción. En dicho caso, no intente ejecutar las comprobaciones de coherencia una tabla a la vez. La mejor manera de reducir la carga de una comprobación de coherencia en sistemas de producción es usar las opciones siguientes:

  • Usar la opción WITH PHYSICAL_ONLY para reducir el uso de la CPU y la memoria.

  • Restaurar una copia de seguridad de la base de datos en un servidor SQL Server independiente y ejecutar las comprobaciones de coherencia en la copia restaurada de la base de datos.

Para obtener más información acerca de estas opciones, consulte el artículo del blog de Paul S. Randal, CHECKDB From Every Angle: Consistency Checking Options for a VLDB (en inglés).

Medición y reducción de la fragmentación de índices

La fragmentación de índices se produce cuando el orden lógico de las páginas de una tabla o índice (según se definen mediante la clave de índice) es distinto del orden físico de las páginas de los archivos de datos. También puede indicar que la densidad de datos de las páginas de archivos de datos es baja, lo que resulta en espacio en disco, memoria y E/S desperdiciados. La fragmentación de índices puede ser el resultado de varias inserciones, actualizaciones o eliminaciones en una tabla. Las ilustraciones siguientes contrastan un índice recién creado y no fragmentado con un índice fragmentado después de varias inserciones, actualizaciones y eliminaciones. La flecha en rojo muestra el orden físico del índice y la flecha en negro muestra el orden lógico de las páginas de índice.

Figura 1. índice no fragmentado (fuente de la imagen: Paul S. Randal)

Índice no fragmentado

 

Figura 2. índice fragmentado (fuente de la imagen: Paul S. Randal)

Índice fragmentado

 

Dado que las inserciones, actualizaciones y eliminación no se distribuyen de manera uniforme entre las filas de la tabla y los índices, la plenitud (o densidad de datos) de cada página puede variar con el tiempo. Para las consultas que examinan parte o todos los índices de una tabla, la fragmentación puede provocar lecturas adicionales de las páginas, lo que perturba el análisis paralelo de los datos y puede afectar significativamente el rendimiento de búsquedas.

La fragmentación de índices puede resultar en una disminución del rendimiento y un uso poco eficaz del espacio, y los índices pueden fragmentarse rápidamente en las bases de datos de uso moderado.

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

Por ejemplo, en SharePoint 2010, una tabla que con frecuencia se fragmento es AllDocs, que contiene las bibliotecas de documentos, sus documentos y listas asociados, y sus metadatos correspondientes.

El nivel de fragmentación de un índice es el porcentaje de páginas de índice que no tienen el mismo orden lógico y físico.

Regeneraciones de índice en línea y sin conexión

La regeneración de índice en línea está disponible solo en SQL Server Enterprise, Developer y Evaluation. Los métodos que se describen en este artículo tienen en cuenta estas restricciones. Los procedimientos que se describen en este artículo recurren a una regeneración de índice sin conexión si la edición de SQL Server que hospeda una base de datos específica no admite las regeneraciones de índice en línea o si el índice que se está regenerando no puede ser sometido a una regeneración de índice en línea. Un índice podría no ser sometido a una regeneración de índice en línea debido a la presencia de columnas de objetos grandes (LOB), tales como columnas con datos de tipo NVARCHAR(MAX), IMAGE, etc.

Para obtener más información acerca de la regeneración de índice en línea, consulte Cómo funcionan las operaciones de índice en línea. Cuando se realiza una regeneración de índice en línea, se obtienen bloqueos de nivel de tabla durante el proceso de regeneración, lo que podría impedir la escritura en la tabla o incluso el acceso a ella. Muchos de los índices de las bases de datos de SharePoint siempre se regeneran mediante una regeneración de índice fuera de línea debido a las columnas LOB.

Incluso si se usa la regeneración de índice en línea, hay dos puntos en la operación en los que se mantienen temporalmente los bloqueos de tabla que podría provocar el bloqueo. Como resultado, es recomendable que siempre programe las actividades de regeneración de índice durante períodos de baja actividad.

Medición de la fragmentación en una base de datos SQL Server 2008 o 2005 (sys.dm_db_index_physical_stats)

En SQL Server 2008 o SQL Server 2005, 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 más información, consulte sys.dm_db_index_physical_stats.

En la tabla siguiente se muestran resultados de ejemplo de sys.dm_db_index_physical_stats, con un valor de 9.375 para avg_fragmentation_in_percent en una fila.

database_id

index_type_desc

alloc_unit_type_

desc

avg_fragmentation_

in_percent

10

CLUSTERED INDEX

IN_ROW_DATA

0

10

NONCLUSTERED INDEX

IN_ROW_DATA

0

10

NONCLUSTERED INDEX

IN_ROW_DATA

0

10

CLUSTERED INDEX

IN_ROW_DATA

0

10

NONCLUSTERED INDEX

IN_ROW_DATA

0

10

CLUSTERED INDEX

IN_ROW_DATA

9.375

Uso la vista de administración dinámica sys.dm_db_index_physical_stats

  1. En la barra de tareas, haga clic en Inicio, seleccione Todos los programas, elija Microsoft SQL Server 2008 y, a continuación, haga clic en SQL Server Management Studio.

    Para usar sys.dm_db_index_physical_stats con un objeto de base de datos, deberá conocer el identificador de base de datos y el identificador de objeto.

  2. Seleccione la base de datos de contenido en el Explorador de objetos y haga clic en Nueva consulta. Ejecute el script siguiente.

    SELECT DB_ID() AS [Database ID];

    Nota

    Cuando usa DB_ID sin especificar ningún nombre de base de datos, el nivel de compatibilidad de la base de datos actual debe ser 100 (una base de datos de SQL Server 2008) o 90 (una base de datos de SQL Server 2005). Si actualizó de una versión anterior de SQL Server, deberá especificar un nombre de base de datos en la sentencia DB_ID. Para obtener más información acerca de los niveles de compatibilidad, consulte sp_dbcmptlevel (Transact-SQL).

  3. Ejecute sys.dm_db_index_physical_stats en la base de datos o el objeto seleccionado. Puede especificar la base de datos, una tabla o un índice.

    Use la sintaxis siguiente al ejecutar sys.dm_db_index_physical_stats.

    sys.dm_db_index_physical_stats ( 
        { database_id | NULL | 0 | DEFAULT }
        , { object_id | NULL | 0 | DEFAULT }
        , { index_id | NULL | 0 | -1 | DEFAULT }
        , { partition_number | NULL | 0 | DEFAULT }
        , { mode | NULL | DEFAULT }
    )
    

    Tenga cuidado a la hora de usar vistas de administración dinámica de sys.dm_db_index_physical_stats porque puede usar una gran cantidad de recursos. Consulte Inside sys.dm_db_index_physical_stats (en inglés) para obtener una descripción completa que explica las distintas maneras que se pueden usar estas vistas.

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

Siga las instrucciones siguientes para reducir el nivel de fragmentación de índices.

Ejecución de las reglas del analizador de mantenimiento de bases de datos

SharePoint 2010 incluye el marco de reglas del analizador de mantenimiento, que incluye varias reglas que permite supervisar el estado de un entorno de SharePoint y, en algunos casos, tomar medidas correctivas para tipos de problemas determinados.

SharePoint 2010 incluye varias reglas relevantes para el mantenimiento de bases de datos de contenido. Existen reglas que reducen automáticamente la fragmentación de índices para algunas bases de datos de SharePoint, así como reglas que comprueban la existencia de estadísticas obsoletas y que las actualizan si fuera necesario. Estas reglas del analizador de mantenimiento reemplaza el trabajo de temporizador actualizado Estadísticas de base de datos introducido en Service Pack 2 para los productos y las tecnologías de SharePoint. De manera predeterminada, estas reglas están configuradas para ejecutarse según una programación que varía de diariamente, semanalmente o a petición en función del objetivo de la regla.

Todas las reglas del analizador de mantenimiento configuradas para ejecutarse diariamente y que están asociadas con un servicio de SharePoint concreto las ejecuta el mismo trabajo de temporizador. El ajuste de la programación de este trabajo de temporizador se realizará cuando las reglas del analizador de mantenimiento configuradas para la ejecución diaria y asociadas a ese servicio se ejecutan durante el día. Todas las reglas que se describen en este artículo están asociadas al Servicio de temporizador de SharePoint.

Las reglas del analizador de mantenimiento configuradas para ejecutarse durante otro intervalo de tiempo (por ejemplo, semanalmente) o asociadas con un servicio diferente tienen trabajos de temporizador distintos. si configura una regla del analizador de mantenimiento para que se ejecute semanalmente, esta se ejecutará con el trabajo de temporizador configurado para ejecutarse semanalmente para el servicio específico asociado a la regla. Es decir, la regla se ejecuta según la programación definida para este trabajo de temporizador.

Para ejecutar reglas del analizador de mantenimiento de manera manual, haga clic en Ejecutar ahora en la cinta de opciones de la página de reglas del analizador de mantenimiento de Administración central. La ejecución de estas reglas evalúa el estado de los índices y las estadísticas; también regenera y recalcula el índice según sea necesario.

Las bases de datos que SharePoint usa tienen índices fragmentados La ejecución de esta regla realiza las tareas siguientes:

  • La regla indica los índices como fragmentados. Dado que la evaluación del estado del índice es una operación que usa muchos recursos, después de que se ejecute la regla del analizador de mantenimiento, esta regla siempre indica los índices como fragmentados con el fin de activar la acción correctiva.

  • Para cada base de datos de SharePoint, la acción de la regla busca el procedimiento almacenado proc_DefragmentIndices y si lo encuentra, lo ejecuta. Este procedimiento genera un listado de todos los índices de la base de datos. El nivel actual de fragmentación se evalúa en cada índice y todos los índices con una fragmentación mayor que el 30% se considera para la regeneración.

  • Si la edición de SQL Server admite la regeneración de índices en línea, se intenta realizar la regeneración para cada índice. Si no se consigue, (por ejemplo, el índice subyacente quizás no admite la regeneración en línea debido a las columnas LOB), se realiza una regeneración de índices sin conexión.

Tal como se indicó anteriormente, esta regla no se aplica a todas las bases de datos de un entorno SharePoint. Algunas bases de datos usan reglas diferentes para realizar actividades de mantenimiento similares.

Búsqueda - Una o más bases de datos de propiedades tienen índices fragmentados. Esta regla realiza el mantenimiento de los índices de las bases de datos de propiedades de búsqueda de SharePoint 2010 Enterprise. De manera predeterminada, esta regla está configurada para ejecutarse semanalmente en cualquier servidor de la granja. Todo el procesamiento de esta regla, incluidas las acciones correctivas, se produce durante la fase Check de la regla. Esto significa que si desea administrar las regeneraciones de índices para la base de datos de propiedades de búsqueda de Enterprise, no es suficiente configurar simplemente la regla para que no regenere los índices automáticamente. Si no desea que SharePoint 2010 realice automáticamente operaciones de mantenimiento de índices, deberá deshabilitar la regla por completo.

La ejecución de Search - One or more property databases have fragmented indices realiza las tareas siguientes:

  • La regla confirma que el entorno se encuentra en un estado en el que es seguro realizar una regeneración del índice.

  • Para cada base de datos de propiedades que se configure para las aplicaciones de búsqueda en la granja local, la regla ejecuta el procedimiento almacenado proc_MSS_DefragSearchIndexes, que genera un listado de todos los índices que tienen una fragmentación media de más del 10%.

  • Cada índice de la lista que afecte al rendimiento de la base de datos de propiedades se regenera. Si la edición de SQL Server admite la regeneración de índices en línea, se realiza una regeneración de índices en línea. Si se intenta esta operación pero se produce un error, el índice se regenera sin conexión.

Búsqueda - Puede que una o varias bases de datos de rastreo tengan índices fragmentados. Esta regla realiza el mantenimiento de los índices de las bases de datos de propiedades de búsqueda de SharePoint 2010 Enterprise. De manera predeterminada, esta regla está configurada para ejecutarse semanalmente en cualquier servidor de la granja. Todo el procesamiento de esta regla, incluidas las acciones correctivas, se produce durante la fase Check de la regla. Esto significa que si desea administrar las regeneraciones de índices para la base de datos de propiedades de búsqueda de Enterprise, no es suficiente configurar simplemente la regla para que no regenere los índices automáticamente. Si no desea que SharePoint 2010 realice automáticamente operaciones de mantenimiento de índices, deberá deshabilitar la regla por completo.

La ejecución de Search - One or more property databases have fragmented indices realiza las tareas siguientes:

  • La regla confirma que el entorno se encuentra en un estado en el que es seguro realizar una regeneración del índice.

  • Para cada base de datos de propiedades que se configure para las aplicaciones de búsqueda en la granja local, la regla ejecuta el procedimiento almacenado proc_MSS_DefragSearchIndexes, que genera un listado de todos los índices que tienen una fragmentación media de más del 10%.

  • Cada índice de la lista que afecte al rendimiento de la base de datos de propiedades se regenera. Si la edición de SQL Server admite la regeneración de índices en línea, se realiza una regeneración de índices en línea. Si se intenta esta operación pero se produce un error, el índice se regenera sin conexión.

Búsqueda - Puede que una o varias bases de datos de rastreo tengan índices fragmentados. Esta regla realiza el mantenimiento de los índices en las bases de datos de rastreo de búsqueda de SharePoint 2010 Enterprise. De manera predeterminada, esta regla está configurada para ejecutarse solamente a petición. Cuando se ejecuta, puede ejecutarse desde cualquier servidor de la granja.

La regla indica los índices de la base de datos de rastreo como fragmentados porque la comprobación de la fragmentación de una base de datos es una operación que usa muchos recursos. Si solo se deshabilita la actividad de reparación de esta regla, se indica que todas las bases de datos de rastreo tienen un estado incorrecto, incluso si sus índices se hayan regenerado recientemente.

Para realizar el mantenimiento manual de las bases de datos de rastreo, deshabilite la regla Search - One or more crawl databases may have fragmented indices por completo

La ejecución de Search - One or more crawl databases may have fragmented indices realiza las tareas siguientes:

  • La regla confirma que el entorno se encuentra en un estado en el que es seguro realizar una regeneración del índice.

  • Para cada base de datos de rastreo configurada para las aplicaciones de búsqueda en la granja local, la regla ejecuta el procedimiento almacenado proc_MSS_DefragGathererIndexes.

  • Cada índice de la base de datos de rastreo de la lista se regenera. Si la edición de SQL Server admite la regeneración de índices en línea, se realiza una regeneración de índices en línea. Si se intenta esta operación pero se produce un error, el índice se regenera sin conexión.

Importante

La regla Search - One or more crawl databases may have fragmented indices regenera todos los índices de todas las bases de datos de rastreo, independientemente del nivel de fragmentación. Además, habilita la compresión de datos de nivel de página, si lo admite la edición de SQL Server que hospeda la base de datos de rastreo.

Dado la naturaleza de la base de datos de rastreo, por lo general no es necesario desfragmentar esta base de datos con frecuencia. Ejecute esta regla después de haber realizado el primero rastreo del contenido. Luego, supervise los índices de la base de datos de rastreo para medir la fragmentación y ejecute esta regla cuando aumente la fragmentación. La fragmentación de índices podría producirse debido a una adición o eliminación repentina de una gran cantidad de contenido rastreado, por ejemplo, durante la expulsión de contenido que resulta de una limpieza del entorno o después de la carga de un nuevo origen de contenido, tal como un recurso compartido o una aplicación web de SharePoint de gran tamaño.

Las siguientes bases de datos no tienen activado ningún mecanismo de mantenimiento automatizado. Estas bases de datos no suele estar muy fragmentadas. Supervíselas en búsqueda de fragmentación y regenere los índices cuando la fragmentación supere un 30%.

  • Base de datos de administración de búsqueda

  • Base de datos de almacenamiento seguro

  • Base de datos de servicio de estado

  • Base de datos de sincronización de perfiles

  • Base de datos de uso

  • Base de datos de metadatos administrados

  • Base de datos de Servicios de conectividad empresarial

  • Base de datos de PerformancePoint Services

Para obtener más información acerca de los cambios que se admiten para las bases de datos de SharePoint 2010, consulte Compatibilidad con los cambios a las bases de datos que utilizan productos de servidor de Office y Windows SharePoint Services in the Microsoft Knowledge Base.

Si el rendimiento de una base de datos o tabla muy fragmentada no mejora de manera notable mediante una desfragmentación frecuente, debería comprobar el rendimiento del subsistema de E/S.

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

Si desea desfragmentar un índice que está asociado a una tabla determinada en lugar de una base de datos completa, puede reorganizar o regenerar el índice.

  • La reorganización de un índice especifica que se reorganiza el nivel de 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 examen del índice. Este proceso usa el espacio existente asignado al índice y siempre se realiza en línea para que los usuarios tengan la tabla subyacente a su disposición.

  • La regeneración de un índice especifica que se genera una copia completamente nueva del índice. Por tanto, una operación de regeneración requiere espacio adicional suficiente como para generar la nueva copia del índice antes de quitar el índice fragmentado anterior. La regeneración mejora el rendimiento de los exámenes y las búsquedas de índice. El índice se puede regenerar con una tabla en línea 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 en línea o se debe poner sin conexión. En la tabla siguiente se describe el método de desfragmentación recomendado para los distintos niveles de fragmentación.

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

Hasta un 10%

Reorganizar (en línea)

Del 10% al 75%

Regenerar (en línea)

75%

Regenerar (sin conexión)

Nota

No se admite el uso de los comandos DROP INDEX y CREATE INDEX en las bases de datos de SharePoint 2010.

Puede reorganizar y regenerar índices mediante la sentencia ALTER INDEX de SQL Server 2008 o SQL Server 2005, o bien el asistente de planeación del mantenimiento de SQL Server 2008 o SQL Server 2005. En este artículo se presentan en detalle solo las opciones SQL Server 2008 o SQL Server 2005.

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. Puede usarlo para deshabilitar, regenerar y reorganizar índices, así como para establecer las opciones del índice. En la mayoría de los casos, puede regenerar índices mientras la base de datos está en línea, lo que permite poner a la disposición de los usuarios un mayor número de datos que una regeneración de índices sin conexión.

Importante

SQL Server 2000 admitía DBCC DBREINDEX y DBCC INDEXDEFRAG para el mantenimiento de índice. Estos comandos son obsoletos a partir de SQL Server 2005 y se quitarán de toda versión futura de SQL Server. No use estos comandos para realizar el mantenimiento de índices en una base de datos de SharePoint 2010.

Nota

Cuando se regenera un índice sin conexión, se aplica un bloqueo de tabla compartida en la tabla para impedir la ejecución de todas las operaciones, excepto SELECT. Las bases de datos de SharePoint 2010 usan índices en clúster específicamente. Cuando se regenera un índice clúster, se aplica un bloqueo de tabla exclusiva en la tabla para impedir que los usuarios finales tengan acceso a ella.

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 = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON)
GO

Ajuste del rendimiento del índice mediante la configuración del factor de relleno

Para mejorar aún más el almacenamiento de datos y el rendimiento del índice, use el factor de relleno. Cuando se crean o regeneran los índices, el valor del factor de relleno (de 1 a 100) determina el porcentaje de espacio que se puede rellenar con datos en cada página de nivel de hoja. El espacio restante se reserva para el crecimiento futuro. Para muchos casos, el nivel de factor de relleno predeterminado 0 (rellenar cada página al 100%) es el valor óptimo. Sin embargo, para SharePoint 2010, un valor predeterminado de 80 es óptimo para permitir el crecimiento y minimizar la fragmentación.

Nota

No es recomendable establecer el factor de relleno para tablas o índices individuales. Aunque este sea el método preferido para bases de datos que no sean de SharePoint SQL Server, pruebas han demostrado que las bases de datos de SharePoint funcionan de manera óptima con un factor de relleno del 80%.

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, consulte sys.indexes (Transact-SQL).

Para configurar el valor del factor de relleno de todo el servidor, use el procedimiento almacenado sp_configure. Para obtener más información, consulte spconfigure (Transact-SQL).

Compresión de archivos de datos

En SQL Server 2008 y SQL Server 2005, es posible comprimir cada archivo de una base de datos (extensiones de nombre de archivo .mdf, .ldf y .ndf) para quitar las páginas sin usar y recuperar espacio en disco. Las bases de datos de SharePoint 2010 no comprimen automáticamente los archivos de datos, aunque muchas actividades crean espacio sin usar en la base de datos. Entre las actividades que pueden crear espacio sin usar se incluyen la ejecución del comando Move-SPSite de Windows PowerShell y la eliminación de documentos, bibliotecas de documentos, listas, elementos de listas y sitios.

Figura 3. Asignación de base de datos

Asignación de base de datos

 

El espacio libre solo se libera del final de archivo; por ejemplo, un archivo de base de datos de contenido de 60 GB con un tamaño de destino especificado de 40 GB libera la mayor cantidad posible de los últimos 20 GB (conceptualmente el extremo derecho) del archivo de base de datos. Si se incluyen páginas en uso en los 20 GB finales, estas se vuelven a asignar a los primeros 40 GB del archivo que se conserva. Puede comprimir los archivos de base de datos de manera individual o en grupo.

Las operaciones de reducción se realizan rara vez y solo después de realizar una operación que quita una gran cantidad de datos de una base de datos y solo cuando no espera volver a usar ese espacio libre. Las operaciones de reducción de archivos de datos provocan una fragmentación significativa del índice y usan una gran cantidad de recursos. Entre algunos ejemplos de cuándo puede ser necesario reducir los archivos de base de datos son cuando reasigna un gran número de colecciones de sitios desde una base de datos de contenido a otra base de datos de contenido o cuando elimina una lista de gran tamaño. Cualquier de esas operaciones puede crear grandes cantidades de espacio en sin usar. Los archivos de base de datos solo se pueden reducir hasta el punto en el que no quede espacio libre restante. Por lo tanto, en una base de datos de contenido, en la que rara vez se elimina contenido, podría no sacar partido de esta reducción y es probable que provoque una disminución del rendimiento cuando debe crecer para poder almacenar datos adicionales sin establecer específicamente ese espacio. Para obtener más información, consulte Inicialización de archivos de base de datos.

Dado que la compresión provoca la fragmentación de índices, no comprima los archivos de base de datos de manera periódica. En cambio , hágalo solamente en respuesta a grandes cantidades de espacio sin usar que aparecen como resultado de operaciones que afectan significativamente a la cantidad relativa de espacio en uso de una base de datos. Si es posible, evite comprimir una base de datos.

Sin embargo, se fuera necesario comprimir una base de datos, siga las pautas siguientes:

  • No comprima automáticamente las bases de datos ni configure un plan de mantenimiento que comprime las bases de datos mediante programación.

  • Compra una base de datos solamente cuando los usuarios o administradores quiten un 50% o más del contenido y no tiene previsto volver a usar el espacio sin usar.

  • Comprima solamente las bases de datos de contenido. Los usuarios y administradores no eliminan datos suficientes de la base de datos de configuración, la base de datos de contenido de Administración central y las distintas bases de datos de aplicaciones de servicio para que estas contengan espacio libre suficiente.

  • La compresión de las bases de datos es una operación que usa una gran cantidad de recursos. Por lo tanto, si fuera necesario comprimir una base de datos, estudie el momento oportuno de su realización.

  • Después de comprimir una base de datos, los índices de esta quedan fragmentados. Use ALTER INDEX… REORGANIZE para corregir la fragmentación. Si el sistema no está configurado para permitir la inicialización de archivos instantánea, comprima la base de datos a un tamaño de destino que se ajuste al tamaño necesario para el crecimiento a corto plazo esperado. Para obtener más información, consulte Inicialización de archivos de base de datos.

Puede comprimir bases de datos y archivos de base de datos manualmente para recuperar espacio mediante la ejecución de las sentencias DBCC SHRINKFILE y DBCC SHRINKDATABASE en SQL Server 2008 o en SQL Server 2005 Management Studio.

Para obtener más información acerca de por qué la compresión de bases de datos afecta al rendimiento y no debe realizarse a menos que sea absolutamente necesario, consulte el artículo sobre por qué no debe comprimir los archivos de datos (en inglés).

Compresión de una base de datos mediante los comandos Transact-SQL

El comando DBCC SHRINKDATABASE comprime los datos y los archivos de registro para una base de datos específica. Para comprimir archivos individuales, use DBCC SHRINKFILE.

DBCC SHRINKDATABASE

El comando DBCC SHRINKDATABASE usa la sintaxis siguiente.

DBCC SHRINKDATABASE 
( 'database_name' | database_id | 0 
     [ ,target_percent ] 
     [ , { NOTRUNCATE | TRUNCATEONLY } ] 
)
[ WITH NO_INFOMSGS ]

database_name | database_id | 0 especifica el nombre o el identificador de la base de datos. Para seleccionar la base de datos actual, use 0.

target_percent es la cantidad de espacio libre, en porcentaje, que desea conservar después de comprimir la base de datos.

NOTRUNCATE compacta los datos de los archivos de datos al mover las páginas asignadas desde el final de un archivo a las páginas sin asignar al inicio del archivo.

TRUNCATEONLY libera todo el espacio libre al final del archivo para que lo use el sistema operativo, pero no realiza ningún movimiento de páginas en el archivo.

Nota

El uso de la opción TRUNCATEONLY no se admite para bases de datos de contenido de SharePoint 2010.

Para obtener más información, consulte DBCC SHRINKDATABASE (Transact-SQL).

DBCC SHRINKFILE

El comando DBCC SHRINKFILE usa la sintaxis siguiente.

DBCC SHRINKFILE 
(
     { 'file_name' | file_id } 
    { [ , EMPTYFILE ] 
    | [ [ , target_size ] [ , { NOTRUNCATE | TRUNCATEONLY } ] ]
    }
)
[ WITH NO_INFOMSGS ]

file_name | file_id especifica el nombre o el identificador del archivo.

EMPTYFILE migra todos los datos desde el archivo especificado hasta otros archivos del mismo grupo de archivos.

Importante

El uso de la opción EMPTYFILE no se admite para bases de datos de contenido de SharePoint 2010.

target_size es el tamaño de destino del archivo en megabytes, expresado como un número entero.

NOTRUNCATE compacta los datos de los archivos de datos al mover las páginas asignadas desde el final de un archivo a las páginas sin asignar al inicio del archivo.

TRUNCATEONLY libera todo el espacio libre al final del archivo para que lo use el sistema operativo, pero no realiza ningún movimiento de páginas en el archivo.

Importante

El uso de la opción TRUNCATEONLY no se admite para bases de datos de contenido de SharePoint 2010.

Para obtener más información, consulte DBCC SHRINKFILE (Transact-SQL).

Compresión de una base de datos mediante SQL Server 2008 Management Studio

Realice el siguiente procedimiento.

Cómo comprimir una base de datos mediante SQL Server 2008 Management Studio

  1. En la barra de tareas, haga clic en Inicio, Todos los programas, Microsoft SQL Server 2008 y SQL Server Management Studio.

  2. En el Explorador de objetos, conéctese a una instancia del motor de base de datos de SQL Server 2008 y expanda dicha instancia.

  3. Expanda Bases de datos, haga clic con el botón secundario del mouse en la base de datos que desea comprimir, elija Tareas, Reducir, Archivos.

  4. Seleccione el tipo de archivo y el nombre del archivo.

  5. Seleccione Reorganizar archivos antes de liberar espacio no utilizado. También debe establecer el valor Reducir el archivo a. Seleccione esta opción para liberar el espacio sin usar en el archivo para que lo use el sistema operativo y para reasignar filas a páginas sin asignar.

  6. Haga clic en Aceptar.

Creación de planes de mantenimiento de SQL Server 2008

Puede aplicar mediante programación muchas de las operaciones de mantenimiento de base de datos que se describen en este artículo mediante la implementación de planes de mantenimiento de SQL Server maintenance plans. Los planes de mantenimiento pueden automatizar y programar las tareas esenciales para proteger los datos. Mediante los planes de mantenimiento en SQL Server 2008 o en SQL Server 2005, un administrador puede programar operaciones, tales como la ejecución de comprobaciones de coherencia de base de datos, la reorganización de índices o la reconstrucción de índices. Para obtener más información, vea los siguientes recursos:

Para configurar un plan de mantenimiento de base de datos de SQL Server 2008

  1. En la barra de tareas, haga clic en Inicio, Todos los programas, Microsoft SQL Server 2008 y SQL Server Management Studio.

  2. En el Explorador de objetos, conéctese a una instancia del motor de base de datos de SQL Server 2008 y expanda dicha instancia.

  3. Elija Administración, haga clic con el botón secundario del mouse en Planes de mantenimiento y seleccione Asistente para planes de mantenimiento.

  4. Elija siguiente hasta alcanzar la página Seleccionar propiedades del plan.

    Figura 4. Página de selección de propiedades de plan

    Página de selección de propiedades de plan

  5. En los campos Nombre y Descripción, especifique un nombre y una descripción.

  6. Decida si se deben configurar uno o más planes de mantenimiento.

    • Para configurar un único plan de mantenimiento, seleccione Una sola programación para todo el plan o ninguna programación.

    • Para configurar planes de mantenimiento con tareas específicas, seleccione Programaciones independientes para cada tarea.

    Si dispone de un entorno con diez o más bases de datos de contenido o más de 200 GB de contenido, se recomienda configurar planes de mantenimiento independientes para proporcionar una especificidad adecuada y maximizar el periodo de mantenimiento.

    Si configura varios planes de mantenimiento para una base de datos, especifique un nombre o una descripción que permite distinguir los planes y sus propósitos, incluidas sus programaciones.

  7. Haga clic en Cambiar para establecer una programación para uno o más planes.

    Aparecerá el cuadro de diálogo Propiedades de programación del trabajo.

    Figura 5. Cuadro de diálogo de propiedades de programación de trabajo

    Cuadro de diálogo de propiedades de programación de trabajo

  8. Complete la programación, haga clic en aceptar y, a continuación, en Siguiente.

  9. En la página Seleccionar tareas de mantenimiento, seleccione las tareas de mantenimiento que deben incluirse en el plan y, a continuación, haga clic en Siguiente.

    Figura 6. Página de selección de tareas de mantenimiento

    Página de selección de tareas de mantenimiento

    Tenga en cuenta las notas siguientes:

    • El plan de mantenimiento debe incluir una reorganización o una reconstrucción del índice, no ambas acciones.

    • Un plan de mantenimiento nunca debe incluir la compresión de una base de datos.

    • Para determinar la duración de cada tarea, pruebe cada una de ellas individualmente antes de combinar las tareas en un plan único. Tal vez deba definir varios planes de mantenimiento en programas separados para que las tareas puedan completarse durante las horas en las que los usuarios no se vean afectados negativamente.

    • La Tarea Limpieza de mantenimiento quita los archivos restantes después de una operación de mantenimiento programada.

  10. En la página Seleccionar el orden de las tareas de mantenimiento, cambie el orden del plan de mantenimiento si fuera necesario. Seleccione una tarea y haga clic en Subir o Bajar. Tras establecer el orden de las tareas, haga clic en siguiente.

    Nota

    Si las bases de datos son muy grandes, puede crear un plan de mantenimiento separado que comprueba la integridad de las base de datos con menos frecuencia que las tareas de mantenimiento del índice.

    Figura 7. Página de selección del orden de las tareas de mantenimiento

    Página de selección de orden de tareas de mantenimiento

  11. A continuación, el asistente le guiará por la configuración de los detalles de cada tarea. En la página Definir la tarea Comprobar la integridad de la BD, seleccione las bases de datos para comprobar la integridad y, a continuación, haga clic en Siguiente.

    Nota

    Puede comprobar con seguridad la integridad de todas las bases de datos de SharePoint 2010.

    Figura 8. Página de definición de tarea de integridad de comprobación de base de datos

    Página de definición de tarea de integridad de comprobación de base de datos

  12. En la página Definir la tarea Reorganizar índice, en la lista Bases de datos, especifique las bases de datos para las que desea reorganizar los índices, seleccione Compactar objetos grandes y haga clic en Siguiente.

    Figura 9. Página de tarea de índice de reorganización

    Página de tarea de índice de reorganización

  13. En la página Definir la tarea Reorganizar índice, si opta por reconstruir índices en lugar de reorganizarlos, especifique las bases de datos en la lista Bases de datos.

  14. Seleccione Cambiar el porcentaje de espacio disponible por página a, escriba 80 y haga clic en Siguiente.

    La opción Cambiar el porcentaje de espacio disponible por página a establece el factor de relleno para la base de datos.

    Figura 10. Página de definición de tarea de índice de regeneración

    Página de definición de tarea de índice de recompilación

  15. En la página Definir la tarea Limpieza de mantenimiento, especifique los valores solicitados y haga clic en Siguiente.

    Sugerencia

    Es recomendable eliminar los informes de texto del plan de mantenimiento.

    Figura 11. Página de definición de tarea de limpieza de mantenimiento

    Página de definición de tarea de limpieza de mantenimiento

  16. En la página Seleccionar opciones de informe, seleccione Escribir informe en un archivo de texto, elija una ubicación para los archivos y, a continuación, haga clic en siguiente hasta completar el asistente.

    Figura 12. Seleccionar opciones de informes

    Seleccionar opciones de informes

Conclusión

El mantenimiento coherente de las bases de datos que hospedan SharePoint 2010 puede mejorar significativamente el estado y rendimiento del sistema.

No olvide guardar copias de seguridad confiables para todas las bases de datos antes de implementar las operaciones y los planes de mantenimiento.

Antes de implementar un plan de mantenimiento u operaciones de mantenimiento específicas que se ejecuten de manera sistemática, pruebe el efecto de dichas operaciones en el sistema y el tiempo que dura su ejecución.

Si es posible, defina la ejecución de las operaciones o los planes de mantenimiento fuera del horario de trabajo habitual para minimizar el efecto del rendimiento para los usuarios.

See Also

Other Resources

Este tema también está disponible como descarga en