Mantenimiento de bases de datos para SharePoint Server 2010

 

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

Resumen:  Aprenda a mantener las bases de datos que hospedan opciones de configuración y datos para Productos de Microsoft SharePoint 2010. Lea las instrucciones y los ejemplos de las tareas y estrategias de mantenimiento de bases de datos recomendadas.

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 de la consola de base de datos (DBCC) CHECKDB 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

  • Reconstrucción de índices en línea frente a sin conexión

  • Medición de la fragmentación en una base de datos de 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 definició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 cualquier tarea de mantenimiento de bases de datos o modificar bases de datos de SharePoint 2010, lea el artículo sobre compatibilidad de los cambios en las bases de datos que se usan en productos de servidor de Office y Windows SharePoint Services.

Introducción

Un mantenimiento rutinario de la base de datos es esencial para el buen funcionamiento de las bases de datos de Microsoft SharePoint 2010.

Las tareas de mantenimiento recomendadas en SharePoint 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

Nota

Este artículo habla sobre el mantenimiento de las bases de datos; no sobre la planeación de la capacidad o el rendimiento. Para más información acerca de la capacidad o la planeación de la capacidad, vea Planeación y configuración del almacenamiento y capacidad de SQL Server (SharePoint Server 2010).

Aunque las versiones anteriores de Productos y Tecnologías de SharePoint requerían la intervención manual para realizar la desfragmentación de índices y el mantenimiento de las estadísticas, algunas reglas del analizador de mantenimiento de SharePoint automatizan este proceso en SharePoint 2010. Estas reglas evalúan el estado de los índices de las bases de datos y las estadísticas a diario, y se encargan automáticamente de estos aspectos en las siguientes bases de datos:

  • Base de datos de configuración

  • Bases de datos de contenido

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

  • Base de datos de sistemas sociales de la aplicación de servicio de perfiles de usuario

  • Bases de datos de informes de la aplicación de servicio Web Analytics

  • Bases de datos provisionales de la aplicación de servicio Web Analytics

  • Bases de datos de Word Automation Services

Puede llevar a cabo tareas de mantenimiento de bases de datos mediante los comandos Transact-SQL o con el asistente para el mantenimiento de bases de datos. este artículo describe los comandos de Transact-SQL que puede usar y explica cómo crear planes de mantenimiento con el asistente para el mantenimiento de bases de datos de Microsoft SQL Server (los ejemplos detallados son para Microsoft SQL Server 2008 R2 y Microsoft SQL Server 2005).

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

Comience sus operaciones de mantenimiento rutinarias con comprobaciones de coherencia para asegurarse de que sus datos e indexaciones no están dañados. Puede usar la instrucción del comando de la consola de la base de datos (DBCC) CHECKDB para realizar una comprobación de coherencia interna de los datos y páginas de índice.

La mayoría de los problemas de coherencia de las bases de datos provienen de errores del subsistema de E/S. Sin embargo, otros factores y eventos pueden afectar también a la coherencia de la base de datos; por ejemplo, un cierre incorrecto de un servidor de base de datos o un fallo de una unidad. Los problemas detectables de rendimiento y disponibilidad pueden ser síntomas a veces de problemas de coherencia de base de datos subyacentes. Realice comprobaciones de coherencia de base de datos al menos una vez por semana en sus bases de datos de SharePoint 2010 y cuando se produzcan fallos de subsistema de E/S o del servidor de las bases 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 realizando las siguientes operaciones:

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

  • Ejecuta el equivalente de DBCC CHECKTABLE en cada tabla y vista de la base de datos para comprobar su integridad lógica y física.

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

Se recomienda ejecutar DBCC CHECKDB en lugar de las operaciones individuales (DBCC CHECKALLOC, DBCC CHECKTABLE y DBCC CHECKCATALOG), ya que DBCC CHECKDB identifica el rango más amplio de errores posibles y, por tanto, es más seguro para iniciarse en un entorno de producción.

DBCC CHECKDB usa muchos recursos de memoria, E/S y CPU. En lugar de ejecutar DBCC CHECKDB en su sistema de producción, puede ejecutarlo en una base de datos restaurada de sus bases de datos de SharePoint en un servidor distinto para así descargar la comprobación de coherencia del sistema de producción.

Se recomienda ejecutar primero DBCC CHECKDB y, después, si revela errores, restaurar la base de datos afectada usando las copias de seguridad más recientes.

Importante

No puede ejecutar DBCC CHECKDB WITH REPAIR_ALLOW_DATA_LOSS. Sin embargo, puede ejecutar DBCC_CHECKDB WITH REPAIR_FAST y REPAIR_REBUILD porque esos comandos actualizan solo los índices de la base de datos asociada.

A continuación se muestra una salida 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 más información acerca de cómo usar DBCC CHECKDB con SQL Server 2008, vea DBCC CHECKDB (Transact-SQL).

DBCC CHECKDB y rendimiento

Se recomienda ejecutar comprobaciones de coherencia durante horas de no producción, ya que DBCC CHECKDB hace un uso extremadamente intensivo de los recursos (E/S, CPU, memoria y espacio de tempdb). Hay una idea errónea muy extendida de que DBCC CHECKDB adquiere bloques de bloqueo, pero esto no ha sido verdad antes de SQL Server 2000. Para más información, vea el artículo sobre un mito sobre un administrador de base de datos de SQL Server: (2/30) DBCC CHECKDB provoca bloqueo (en inglés).

Puede que le parezca que DBCC CHECKDB usa demasiados recursos para su sistema de producción. En ese caso, no intente realizar comprobaciones de coherencia en una tabla cada vez. Las mejores formas de reducir la carga de una comprobación de integridad en el sistema de producción son usando una de las siguientes opciones:

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

  • Restaure una copia de seguridad de una base de datos en un SQL Server independiente y realice comprobaciones de coherencia en la copia restaurada de la base de datos.

Para más información acerca de estas opciones, vea la entrada del blog de Paul S. Randal, en la que habla de CHECKDB desde distintos ángulos: opciones de comprobación de coherencia para una base de datos de gran tamaño (en inglés).

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

La fragmentación de índices tiene lugar cuando el orden lógico de las páginas de una tabla o un índice (según define la clave del índice) es distinto del orden físico de las páginas de los archivos de datos. Esto también puede significar que la densidad de los datos en las páginas de archivos de datos es baja, lo que lleva a un mal uso del espacio en disco, de la memoria y de la E/S. La fragmentación de índices puede ser el resultado de numerosas inserciones, actualizaciones o eliminaciones en una tabla. Las siguientes ilustraciones contrastan un índice creado recientemente y sin fragmentar con un índice fragmentado después de muchas inserciones, actualizaciones y eliminaciones. La flecha roja muestra el orden físico del índice y, la negra, el orden lógico de las páginas del índice.

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

Índice no fragmentado

 

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

Índice fragmentado

 

Puesto que las inserciones, actualizaciones y eliminaciones no se distribuyen de forma equitativa entre las filas de la tabla y los índices, el llenado (o densidad de los datos) de cada página puede variar con el tiempo. Para consultas que pueden examinar parte o la totalidad de los índices de una tabla, la fragmentación puede causar lecturas de páginas adicionales, lo que dificultará el examen paralelo de datos y afectar de forma significativa al rendimiento de la búsqueda.

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 en bases de datos que solo tienen un 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 se suele fragmentar es AllDocs, que contiene bibliotecas de documentos, sus documentos asociados y elementos de listas, así como sus metadatos correspondientes.

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

Reconstrucción de índices en línea frente a sin conexión

La reconstrucción de índices en línea solo está disponible en ediciones SQL Server de empresa, desarrollador y evaluación. Los métodos descritos en este artículo tienen estas restricciones en cuenta. Los procedimientos del artículo se revierten a una reconstrucción de índice sin conexión si la edición de SQL Server que hospeda una base de datos específica no admite las reconstrucciones de índices en línea o si el índice que si se está reconstruyendo no es apto para una reconstrucción de índices en línea. Un índice puede no ser apto para reconstrucción en línea debido a la presencia de columnas de objetos grandes (LOB), como columnas con un tipo de datos NVARCHAR(MAX), IMAGE, etc.

Para más información acerca de las reconstrucciones de índices en línea, vea el artículo sobre cómo funcionan las operaciones de índices en línea. Cuando se realiza una reconstrucción de índices en línea, se realizan bloqueos de nivel de la tabla durante el proceso de reconstrucción, lo que puede evitar la escritura o incluso el acceso por completo. Muchos de los índices de las bases de datos de SharePoint se reconstruyen siempre usando una reconstrucción de índices sin conexión debido a columnas LOB.

Incluso si se usa la reconstrucción de índices en línea, sigue habiendo dos puntos en la operación en la se mantienen los bloqueos de la tabla de forma momentánea, lo que puede causar el bloqueo. Como resultado, se recomienda programar siempre las actividades de reconstrucción de índices durante periodos de baja actividad.

Medición de la fragmentación en una base de datos de 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 específica.

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 más información, vea sys.dm_db_index_physical_stats.

La siguiente tabla muestra resultados 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

Para usar 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, seleccione 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, debe conocer el identificador de la base de datos y el del objeto.

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

    SELECT DB_ID() AS [Database ID];

    Nota

    Al usar DB_ID sin especificar un nombre de base de datos, el nivel de compatibilidad de la base de datos actual debe ser 100 (una base de datos SQL Server 2008) o 90 (una base de datos SQL Server 2005). Si ha actualizado desde una versión anterior de SQL Server, debe especificar un nombre de base de datos en la instrucción DB_ID. Para más información acerca de niveles de compatibilidad, vea sp_dbcmptlevel (Transact-SQL).

  3. Inicie sys.dm_db_index_physical_stats en la base de datos o el objeto que seleccione. Puede especificar la base de datos y una tabla o índice.

    Use la siguiente sintaxis al iniciar 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 al usar la DMV sys.dm_db_index_physical_stats, ya que puede consumir muchos recursos. Vea el tema sobre sys.dm_db_index_physical_stats (en inglés) para obtener instrucciones detalladas sobre las distintas formas de uso.

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

Use las siguientes instrucciones para reducir el nivel de fragmentación de índice.

Inicio de reglas del Analizador de mantenimiento de bases de datos

SharePoint 2010 incluye el marco de reglas del Analizador de mantenimiento. El marco contiene numerosas reglas que supervisan el estado y el buen funcionamiento de un entorno de SharePoint y, en algunos casos, lleva a cabo acciones para corregir determinados tipos de problemas.

SharePoint 2010 incluye varias reglas que corresponden al mantenimiento de bases de datos de contenido. Hay reglas que reducen automáticamente la fragmentación de índices para algunas bases de datos de SharePoint, y hay reglas que comprueban si hay estadísticas sin actualizar para, si es necesario, actualizarlas. Estas reglas del Analizador de mantenimiento sustituyen al trabajo de temporizador de estadísticas de base de datos presentado en el Service Pack 2 de Productos y Tecnologías de SharePoint. De forma predeterminada, estas reglas están configuradas para ejecutarse en un programa que varía de ser diario, semanal o a petición, en función del objetivo de la regla.

Todas las reglas del Analizador de mantenimiento configuradas para ejecutarse a diario y asociadas con un servicio concreto de SharePoint se inician mediante el mismo trabajo de temporizador. Al ajustar la programación de este trabajo de temporizador, también se ajustará cuándo se ejecutarán a lo largo del día las reglas del Analizador de mantenimiento configuradas para la ejecución diaria y asociadas con el servicio de temporizador de SharePoint.

Las reglas del Analizador de mantenimiento configuradas para ejecutarse en un intervalo distinto (como 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, esa regla se ejecutará con el trabajo de temporizador configurado para ejecutarse semanalmente para el servicio específico al que está asociada la regla del Analizador de mantenimiento. En otras palabras, la regla se ejecuta en el programa definido para ese trabajo de temporizador.

Puede iniciar reglas del Analizador de mantenimiento manualmente, haciendo clic en Ejecutar ahora en la cinta de opciones de la página de reglas del Analizador de mantenimiento, en Administración central. Al ejecutar estas reglas, se evalúa el estado de los índices y las estadísticas: también se reconstruyen y se recalcula el índice según corresponda.

Las bases de datos que usa SharePoint tienen índices fragmentados. Al ejecutar esta regla, se realizan las siguientes tareas:

  • La regla notifica los índices como fragmentados. Dado que la evaluación del estado del índice es una operación costosa, una vez que se ejecute la regla del Analizador de mantenimiento, la regla mostrará siempre los índices como fragmentados para activar la acción correctiva.

  • Para cada base de datos de SharePoint, la acción de la regla busca y, si lo encuentra, ejecuta el procedimiento almacenado de proc_DefragmentIndices, que crea una lista de todos los índices de la base de datos. El nivel actual de fragmentación se evalúa en cada índice. Cualquier índice que esté fragmentado más del 30 por ciento se considerará para reconstrucción.

  • Si la edición de SQL Server admite reconstrucciones de índices en línea, se intentará realizar una reconstrucción en línea para cada índice. Si no se puede realizar (por ejemplo, el índice subyacente puede no admitir reconstrucciones en línea debido a columnas LOB), se realizará una reconstrucción de índices sin conexión.

Tal y como se ha indicado anteriormente, esta regla no sirve para todas las bases de datos de SharePoint. Determinadas bases de datos usan reglas diferentes para realizar actividades de mantenimiento similares.

Búsqueda: una o varias bases de datos de propiedades tienen índices fragmentados. Esta regla mantiene los índices en las bases de datos de propiedades de búsqueda de SharePoint 2010 Enterprise. De forma predeterminada, esta regla está configurada para ejecutarse semanalmente en todos los servidores de la granja de servidores. Todo el procesamiento de esta regla, incluidas las acciones correctivas, se produce durante la fase Check de la regla. Esto significa que si administra reconstrucciones de índices para la base de datos de propiedades de búsqueda de Enterprise, no bastará con configurar esta regla para que no reconstruya los índices automáticamente. Debe deshabilitar la regla por completo si no desea que SharePoint 2010 realice operaciones de mantenimiento de índices de forma automática.

Al ejecutar Search - One or more property databases have fragmented indices, se llevan a cabo las siguientes tareas:

  • La regla confirma que el entorno está en un estado en el que es seguro realizar una reconstrucción de índices.

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

  • Se regenerará cada índice de la lista que afecte al rendimiento de la base de datos de propiedades. Si la edición de SQL Server admite las reconstrucciones de índices en línea, se realizará una reconstrucción en línea. Si se intenta realizar una reconstrucción de índices en línea sin éxito, el índice se reconstruirá sin conexión.

Búsqueda: una o varias bases de datos de rastreo pueden tener índices fragmentados. Esta regla mantiene los índices en las bases de datos de propiedades de búsqueda de SharePoint 2010 Enterprise. De forma predeterminada, esta regla está configurada para ejecutarse semanalmente en todos los servidores de la granja de servidores. Todo el procesamiento de esta regla, incluidas las acciones correctivas, se produce durante la fase Check de la regla. Esto significa que si administra reconstrucciones de índices para la base de datos de propiedades de búsqueda de Enterprise, no bastará con configurar esta regla para que no reconstruya los índices automáticamente. Debe deshabilitar la regla por completo si no desea que SharePoint 2010 realice operaciones de mantenimiento de índices de forma automática.

Al ejecutar Search - One or more property databases have fragmented indices, se llevan a cabo las siguientes tareas:

  • La regla confirma que el entorno está en un estado en el que es seguro realizar una reconstrucción de índices.

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

  • Se regenerará cada índice de la lista que afecte al rendimiento de la base de datos de propiedades. Si la edición de SQL Server admite las reconstrucciones de índices en línea, se realizará una reconstrucción en línea. Si se intenta realizar una reconstrucción de índices en línea sin éxito, el índice se reconstruirá sin conexión.

Búsqueda: una o varias bases de datos de rastreo pueden tener índices fragmentados. Esta regla mantiene los índices en las bases de datos de propiedades de búsqueda de SharePoint 2010 Enterprise. De forma predeterminada, esta regla está configurada para ejecutarse solo a petición. Cuando se ejecuta, puede hacerse desde cualquier servidor de la granja de servidores.

La regla notifica los índices de la base de datos de rastreo como fragmentados, ya que la comprobación de la fragmentación en una base de datos resulta muy costosa. Si solo se deshabilita la actividad de reparación de esta regla, se obtendrá un informe de que todas las bases de datos de rastreo están en mal estado, incluso cuando sus índices se han reconstruido recientemente.

Para mantener los índices en las bases de datos de rastreo manualmente, deshabilite la regla Search - One or more crawl databases may have fragmented indices por completo.

Al ejecutar Search - One or more crawl databases may have fragmented indices, se llevan a cabo las siguientes tareas:

  • La regla confirma que el entorno está en un estado en el que es seguro realizar una reconstrucción de índices.

  • Para cada base de datos de rastreo configurada para buscar aplicaciones en la granja de servidores local, la regla ejecuta el procedimiento almacenado proc_MSS_DefragGathererIndexes.

  • Se reconstruirá cada índice de la base de datos de rastreo de la lista. Si la edición de SQL Server admite las reconstrucciones de índices en línea, se realizará una reconstrucción en línea. Si se intenta realizar una reconstrucción de índices sin éxito, el índice se reconstruirá sin conexión.

Importante

La regla Search - One or more crawl databases may have fragmented indices reconstruye todos los índices de las bases de datos de rastreo, independientemente del nivel de fragmentación. También permite la compresión de datos de nivel de páginas, si lo admite la edición de SQL Server que hospeda la base de datos de rastreo.

Dada la naturaleza de la base de datos de rastreo, no tendrá que desfragmentar esta base de datos con frecuencia. Ejecute esta regla después del primer rastreo completo de su contenido. Después, supervise los índices de la base de datos de rastreo por si se han fragmentado, y ejecute esta regla si la fragmentación del índice crece. La fragmentación del índice puede 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 resulte de una limpieza de entorno o tras la incorporación de un nuevo origen de contenido, como un uso compartido de archivos o una aplicación web SharePoint de gran tamaño.

Las siguientes bases de datos no cuentan con un mecanismo de mantenimiento automatizado. Estas bases de datos no suelen tener mucha fragmentación. Supervise la fragmentación de estas bases de datos y reconstruya los índices cuando la fragmentación supere el 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 más información acerca de los cambios admitidos para bases de datos de SharePoint 2010, vea el artículo sobre compatibilidad de los cambios en las bases de datos que se usan en productos de servidor de Office y Windows SharePoint Services en la Microsoft Knowledge Base.

Si el rendimiento de una tabla o base de datos muy fragmentadas no se mejora con una desfragmentación frecuente, debe 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 el í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 el nivel hoja del índice se reorganice. 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. La reorganización de un índice usa el espacio existente asignado al índice. La reorganización siempre se realiza con conexión para que la tabla subyacente esté disponible para los usuarios.

  • La reconstrucción de un índice especifica que se ha creado una nueva copia del índice. Por tanto, una operación de reconstrucción requiere suficiente espacio adicional para construir una nueva copia del índice antes de eliminar el índice fragmentado antiguo. La reconstrucción mejora el rendimiento de los exámenes y búsquedas de índice. El índice se puede reconstruir 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. La siguiente tabla describe el método de desfragmentación recomendado para distintos niveles de fragmentación.

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

Hasta 10%

Reorganizar (con conexión)

10-75%

Reconstruir (con conexión)

75%

Reconstruir (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 reconstruir índices usando la instrucción ALTER INDEX SQL Server 2008 o SQL Server 2005, o bien el asistente para el mantenimiento de SQL Server 2008 o SQL Server 2005. Este artículo presenta en detalle solo las opciones de 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. Puede usarlo para deshabilitar, reconstruir y reorganizar índices. También puede usarlo para definir opciones en el índice. En la mayoría de los casos, puede reconstruir índices mientras la base de datos está en línea, lo que mantiene los datos más disponibles para los usuarios que con la reconstrucción de índices sin conexión.

Importante

SQL Server 2000 admitía DBCC DBREINDEX y DBCC INDEXDEFRAG para el mantenimiento de índices. Estos comandos se han quedado obsoletos desde SQL Server 2005 en adelante y se eliminarán en una futura versión de SQL Server. No use estos comandos para realizar el mantenimiento de índices en una base de datos de SharePoint 2010.

Nota

Cuando se reconstruye un índice sin conexión, se coloca un bloqueo de tabla compartida para impedir todas las operaciones excepto SELECT. Las bases de datos SharePoint 2010 usan índices clúster de forma específica. Cuando se reconstruye un índice sin conexión, se coloca un bloqueo de tabla exclusiva en la tabla para impedir que los usuarios 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 = 80, SORT_IN_TEMPDB = ON,
STATISTICS_NORECOMPUTE = ON)
GO

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

Para mejorar aún más el rendimiento y el almacenamiento de los datos de índices, use el factor de relleno. Cuando se crean o reconstruyen índices, el valor del factor de relleno (1-100) determina el porcentaje de espacio que se puede rellenar con datos en cada página de nivel hoja. El espacio restante se reserva para el crecimiento futuro. En muchas situaciones, el nivel de factor de relleno de todo el servidor de 0 (relleno de cada página a 100%) es óptimo. Sin embargo, para SharePoint 2010, una configuración de todo el servidor de 80 es óptima para permitir el crecimiento y minimizar la fragmentación.

Nota

No se recomienda definir el factor de relleno para tablas o índices individuales. Aunque es el método preferido para bases de datos no pertenecientes a SharePoint SQL Server, las pruebas demuestran que las bases de datos de SharePoint funcionan mejor con un factor de relleno del 80%.

Para ver el valor del factor de relleno de uno o varios índices, consulte la vista del catálogo sys.indexes. Para más información acerca de la vista, vea el tema sobre sys.indexes (Transact-SQL).

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

Reducción de archivos de datos

En SQL Server 2008 y SQL Server 2005, puede reducir cada archivo de una base de datos (extensiones de nombres de archivo .mdf, .ldf y .ndf) para eliminar páginas sin usar y recuperar espacio en disco. Las bases de datos de SharePoint 2010 no reducen archivos de datos automáticamente, aunque muchas actividades crean espacio sin usar en la base de datos. Entre las actividades que pueden generar espacio sin usar incluyen la ejecución de comandos de Move-SPSite 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 del 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 tanto espacio como es posible de los últimos (conceptualmente, el extremo ‘derecho’) 20 GB del archivo de la base de datos. Si las páginas usadas se incluyen en los últimos 20 GB, esas páginas se recolocan después en los primeros 40 GB del archivo retenido. Puede reducir archivos de la base de datos individualmente o por grupo.

Realice operaciones de reducción solo ocasionalmente, y no después de realizar una operación que elimine una gran cantidad de datos de una base de datos y solo cuando no espere usar el espacio libre de nuevo. Las operaciones de reducción de archivos de datos pueden ocasionar una gran fragmentación de índices y consumen muchos recursos. Como ejemplos de cuándo debe reducir archivos de base de datos se pueden mencionar cuando reubica un gran número de colecciones de sitios de una base de datos de contenido a otra, o cuando elimina una lista de gran tamaño. Cualquiera de estas operaciones puede crear grandes cantidades de espacio sin usar. Los archivos de bases de datos solo se pueden reducir hasta el punto en el que no quede espacio libre disponible. Por lo tanto, una base de datos de contenido en la que raramente elimina puede no beneficiarse mucho de una reducción, y probablemente experimente una reducción del rendimiento cuando tenga que crecer para acomodar datos adicionales sin acomodaciones específicas. Para más información, vea el artículo sobre inicialización de archivos de bases de datos.

Dado que la reducción causa fragmentación de índices, no reduzca archivos de la base de datos regularmente. En su lugar, reduzca archivos de base de datos solo en respuesta a grandes cantidades de espacio sin usar como resultado de operaciones que afectan considerablemente a la cantidad relativa de espacio usado en una base de datos. Si no es posible, evite reducir una base de datos.

Sin embargo, si debe reducir una base de datos, siga estas directrices:

  • No haga una reducción automática de las bases de datos ni configure un plan de mantenimiento que reduzca sus bases de datos mediante programación.

  • Reduzca una base de datos solo cuando los usuarios o administradores eliminen el 50% o más del contenido y no espere volver a usar el espacio sin usar.

  • Reduzca solo bases de datos de contenido. Los usuarios y administradores no eliminan suficientes datos de la base de datos de configuración, la base de datos de contenido de Administración central y de diversas bases de datos de aplicaciones de servicios como para contener un espacio libre significativo.

  • La reducción de las bases de datos es una operación que usa una extrema cantidad de recursos. Por lo tanto, si es totalmente necesario reducir una base de datos, estudie el momento oportuno de su programación.

  • Tras reducir una base de datos, los índices de la base de datos se fragmentarán. Use ALTER INDEX… REORGANIZE para hacerse cargo de la fragmentación. Si no puede permitir la inicialización instantánea de archivos, reduzca la base de datos a un tamaño de destino que acomode el tamaño necesario para el crecimiento a corto plazo esperado. Para más información, vea el artículo sobre inicialización de archivos de bases de datos.

Puede reducir bases de datos y archivos de bases de datos manualmente para recuperar espacio ejecutando las instrucciones DBCC SHRINKFILE y DBCC SHRINKDATABASE en SQL Server 2008 o SQL Server 2005 Management Studio.

Para más información sobre el motivo por el que la reducción de una base de datos daña el rendimiento y no debe realizarse a menos que sea totalmente necesario, vea el artículo sobre por qué no es recomendable reducir sus archivos de datos (en inglés).

Reducción de una bases de datos con comandos Transact-SQL

DBCC SHRINKDATABASE reduce los datos y los archivos de registro para una base de datos específica. Para reducir archivos individuales, use DBCC SHRINKFILE.

DBCC SHRINKDATABASE

DBCC SHRINKDATABASE usa la siguiente sintaxis.

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 el espacio libre, como porcentaje, que desea conservar tras la reducción de la base de datos.

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

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

Nota

El uso de la opción TRUNCATEONLY no está admitido para bases de datos de contenido de SharePoint 2010.

Para más información, vea el tema sobre DBCC SHRINKDATABASE (Transact-SQL).

DBCC SHRINKFILE

DBCC SHRINKFILE usa la siguiente sintaxis.

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

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

EMPTYFILE migra todos los datos del archivo especificado a otros archivos del mismo grupo de archivos.

Importante

El uso de la opción EMPTYFILE no está admitido para archivos de bases de datos de SharePoint 2010.

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

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

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

Importante

El uso de la opción TRUNCATEONLY no está admitido para bases de datos de contenido de SharePoint 2010.

Para más información, vea el tema sobre DBCC SHRINKFILE (Transact-SQL).

Reducción de una base de datos con SQL Server 2008 Management Studio

Realice el siguiente procedimiento.

Para reducir una base de datos con SQL Server 2008 Management Studio

  1. En la barra de tareas, elija Inicio, Todos los programas, Microsoft SQL Server 2008, SQL Server Management Studio.

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

  3. Expanda Bases de datos, haga clic con el botón secundario en la base de datos que desea reducir, seleccione Tareas, Reducir, Archivos.

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

  5. Seleccione Reorganizar archivos antes de liberar espacio no utilizado. También debe definir el valor Reducir archivo. Seleccione esta opción para liberar espacio sin usar en el archivo en el sistema operativo y reubicar las filas en páginas no asignadas.

  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 bases de datos tratadas en este artículo con la implementación de planes de mantenimiento de SQL Server. Los planes de mantenimiento pueden automatizar y programar tareas esenciales para proteger sus datos. Al usar planes de mantenimiento en SQL Server 2008 o SQL Server 2005, un administrador puede programar operaciones como la ejecución de comprobaciones de coherencia de bases de datos, reorganización de índices o reconstrucción de índices. Para más información, vea los siguientes recursos:

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

  1. En la barra de tareas, elija Inicio, Todos los programas, Microsoft SQL Server 2008, SQL Server Management Studio.

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

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

  4. Seleccione Siguiente hasta que llegue a la página de selección de 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 configurar uno o varios 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 varios planes de mantenimiento con tareas específicas, seleccione Programaciones independientes para cada tarea.

    Si dispone de un entorno con 10 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 descripción que les permita diferenciar los planes y sus propósitos, incluidas sus programaciones.

  7. Haga clic en Cambiar para definir una programación para uno o varios planes.

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

    Figura 5. Cuadro de diálogo Propiedades de programación del 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, haga clic en Siguiente.

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

    Figura 6. Página Seleccionar tareas de mantenimiento

    Página de selección de tareas de mantenimiento

    Tenga en cuenta lo siguiente:

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

    • Un plan de mantenimiento nunca debe incluir la reducció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 finalizar durante horas que no afecten negativamente a los usuarios.

    • La Tarea Limpieza de mantenimiento quita archivos que se quedan tras un mantenimiento programado.

  10. En la página Seleccionar el orden de las tareas de mantenimiento, cambie el orden de las tareas de plan de mantenimiento si es necesario. Seleccione una tarea y, a continuación, haga clic en Subir o Bajar. Tras ordenar las tareas, haga clic en Siguiente.

    Nota

    Si sus bases de datos son muy grandes, puede que desee crear un plan de mantenimiento independiente que compruebe la integridad de la base de datos con menos frecuencia que el mantenimiento de índices.

    Figura 7. Página Seleccionar orden de las tareas de mantenimiento.

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

  11. A continuación, el asistente lo 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 cuya integridad desee comprobar 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 Definir la tarea Comprobar la integridad de la BD

    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, active la casilla Compactar objetos grandes y, a continuación, haga clic en Siguiente.

    Figura 9. Página Definir la tarea Reorganizar índice

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

  13. En la página Definir la tarea reorganizar índice, si elige reconstruir los 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, escriba 80 y haga clic en Siguiente.

    Cambiar el porcentaje de espacio disponible define el factor de relleno para la base de datos.

    Figura 10. Página Definir la tarea reorganizar índice

    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

    Se recomienda eliminar los informes de texto del plan de mantenimiento.

    Figura 11. Definir la tarea Limpieza de mantenimiento

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

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

    Figura 12. Seleccionar opciones de informes

    Seleccionar opciones de informes

Conclusión

Un mantenimiento coherente de las bases de datos que hospedan SharePoint 2010 puede mejorar de forma significativa el estado y el rendimiento de su 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 opciones específicas de mantenimiento para que se ejecuten consistentemente, 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 planes de mantenimiento fuera del horario de trabajo habitual para minimizar el efecto del rendimiento en los usuarios.

See Also

Other Resources

Este tema también se encuentra disponible como descarga