lunes, 19 de marzo de 2012

SharePoint 2007–Monitoreo de la la Base de Datos

El propósito de este artículo es identificar un conjunto de actividades a ser realizadas para monitorear la Base de Datos sobre la que hemos instalado SharePoint 2007. Está basado en distintos artículo de Microsoft cuyos enlaces pueden ser consultados en la sección de bibliografía.

A modo de introducción, podemos decir que el monitoreo de la Base de Datos es una actividad esencial para garantizar el correcto funcionamiento de SharePoint 2007. La principales actividades de monitoreo incluyen:

  • Verificar la integridad de la base de datos.
  • Desfragmentar índices.
  • Configurar el factor de relleno del servidor.
  • Recuperar espacio no utilizado de la base de datos.

Las tareas pueden ser realizadas mediante Transact-SQL o mediante el asistente de mantenimiento. En este artículo comentaremos las opciones de Transact-SQL. Para las opciones mediante el programa de mantenimiento, pueden consultar la página 18 del artículo http://technet.microsoft.com/en-us/library/cc262731(v=office.12).aspx.

 

Verificar la integridad de la base de datos

Mediante DBCC CHECKDB podemos corroborar la integridad física y lógica de la base de datos. Ejecuta varias operaciones por separado que pueden ser consultadas en este enlace: http://msdn.microsoft.com/es-es/library/ms176064.aspx.

La recomendación es no usar las opciones REPAIR a menos que sea necesario porque hayamos encontrado un problema.

En la siguiente imagen se ve un ejemplo de salida de esta operación:

image

Importante: no ejecutar esta operación en horario de producción por un tema de rendimiento y de bloqueos que el comando ejecuta.

 

Fragmentación

La fragmentación puede ser el resultado de muchas inserciones, modificaciones o eliminaciones en nuestras tablas. Cuando una tabla se fragmenta, sus índices también se fragmentan. Con el tiempo, la fragmentación puede degradar el rendimiento y utilizar en forma ineficiente el espacio.

Si bien desfragmentar tablas es posible, la desfragmentación de índices genera mejores resultados.

Un ejemplo en SharePoint de tabla que suele fragmentarse es AllDocs, en donde residen las librerías de documentos. La vista sys.dm_db_index_physical_stats nos permite determinar el estado de fragmentación de los índices de una tabla o vista específica. Pueden encontrar más información en: http://msdn.microsoft.com/en-us/library/ms188917.aspx. Se recomienda no utilizar el comando DBCC SHOWCONTIG porque será removido en próximas versiones.

Para medir la fragmentación, se recomienda evaluar la columna: avg_fragmentation_in_percent. Esta columna deberá tender a cero. Valores de 0 a 10 son aceptables.

En el siguiente ejemplo, se puede ver un resultado posible:

image

Dato: para obtener el ID de la base de datos usar SELECT DB_ID() AS [Database ID];

Para reducir el nivel de fragmentación se recomiendan las siguientes acciones:

Ejecutar el job Database Statistics

Este job fue modificado significativamente con el SP2 de WSS 3.0 para también reconstruir índices. En forma predeterminada se ejecuta entre las 22:00 y las 5:00 y ejecuta estas operaciones:

  • Actualiza las estadísticas.
  • Reconstruye todos los índices cada vez que se ejecuta. La forma depende de la versión de SQL.

Ejecutar el procedimiento almacenado de Desfragmentación.

Una vez que hemos determinado nuestros niveles de fragmentación, podemos programar este procedimiento para que se ejecute diariamente, semanalmente o mensualmente de acuerdo a nuestras necesidades. Recomendaciones:

  • Ejecutarlo al menos semanalmente.
  • Ejecutarlo luego de las opciones de reparación: DBCC CHECKDB REPAIR

Más información sobre este procedimiento en: http://support.microsoft.com/kb/943345/. Microsoft no puede predecir el resultado de este procedimiento cuando terceras partes han hecho cambios a la base de datos, modificado datos o incluso hacer consultas ad-hoc. Más información en: http://support.microsoft.com/kb/841057/.

Reducir fragmentación para una tabla o índice específico.

Este se puede lograr reorganizando el índice (operación en línea) o reconstruyendo el índice (en línea o fuera del línea). El nivel de fragmentación nos da una idea del método de desfragmentación a utilizar:

image

 

Configurar el factor de relleno del servidor

El factor de relleno nos permite reservar espacio para futuro crecimiento. Para muchas situaciones, el valor predeterminado 0 es óptimo, sin embargo, para SharePoint 2007 un valor de 70 a nivel de servidor es lo recomendado. Por otro lado, si bien es posible, tampoco se recomienda valores específicos para tablas o índices individuales.

Sys.indexes nos permite conocer el factor de relleno para uno o más índices: http://msdn.microsoft.com/en-us/library/ms173760.aspx. Para configurar el factor de relleno podemos utilizar spconfigure: http://msdn.microsoft.com/en-us/library/ms188787.aspx.

 

Recuperar espacio no utilizado de la base de datos

En SQL Server es posible contraer el espacio de los archivos de datos para remover espacio no utilizado. SharePoint no realiza esta operación automáticamente a pesar de que algunas operaciones como el borrado de un documento, una lista, una librería o un sitio pueden generar espacio en blanco.

La recuperación de espacio puede ser útil cuando tenemos operaciones frecuentes de eliminación de datos. Algunas recomendaciones:

  • No programar esta operación para que se ejecute automáticamente.
  • Ejecutar esta opción cuando se elimino el 50% del contenido.
  • No ejecutar esta operación para la BD de configuración, la BD de contenido del Administrador de SharePoint o las SSP. Normalmente es recomendable para las bases de contenido.
  • Esta operación consume recursos, se recomienda planificarla.

Para llevar adelante esta operación, se pueden utilizar los comandos DBCC SHRINKDATABASE o DBCC SHRINKFILE, Más información en http://technet.microsoft.com/en-us/library/ms190488.aspx y http://technet.microsoft.com/en-us/library/ms189493.aspx respectivamente.

 

Otras consideraciones

Algunas otras recomendaciones a tener en cuenta:

  • Limitar la base de contenido a 100 GB, si es necesario con múltiples BDs.
  • La cantidad de archivos de datos debería ser menor o igual a la cantidad de procesadores.
  • Los archivos de datos deberían tener el mismo tamaño.

Más información en: http://www.mssqltips.com/sqlservertip/1777/best-practices-for-sharepoint-content-databases-in-sql-server/.

 

Bibliografía

 

Herramientas

0 comentarios:

Publicar un comentario en la entrada