Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Acerca de las estadísticas de base de datos
Las estadísticas para la optimización de consultas son objetos que contienen información estadística sobre la distribución de valores en una o varias columnas de una tabla o vista indizada. El optimizador de consultas usa estas estadísticas para calcular la cardinalidad, o el número de filas, en el resultado de la consulta. Estas estimaciones de cardinalidad permiten al optimizador de consultas crear un plan de consulta de alta calidad.
Por ejemplo, el optimizador de consultas puede mejorar el rendimiento de las consultas mediante estimaciones de cardinalidad para seleccionar el operador de búsqueda de índices en lugar del operador de análisis de índices más intensivo en recursos. De lo contrario, las estadísticas obsoletas pueden reducir el rendimiento de las consultas mediante planes de consulta ineficaces.
Las implementaciones de SharePoint de gran empresa deben tener planes de mantenimiento de bases de datos para actualizar las estadísticas de base de datos en bases de datos de contenido que residen en Microsoft SQL Server. Los clientes no deben depender solo de los trabajos de mantenimiento de bases de datos basados en SharePoint para realizar estas tareas. Para más información, consulte Procedimientos recomendados para SQL Server en una granja de servidores de SharePoint.
Síntomas
Cuando las estadísticas de base de datos están obsoletas, las instalaciones de SharePoint Server pueden experimentar uno o varios de los síntomas siguientes:
Tiempos de carga lentos y disminución del rendimiento que pueden generar un error HTTP 500 al abrir una página de sitio
Rendimiento más lento que genera mensajes de error como el ejemplo siguiente:
Service unavailable Unknown SQL Exception 53 Server Error in '/' Application Runtime ErrorLa realización de rastreos de búsqueda provoca un rendimiento inesperado en SQL Server, bloqueo de base de datos y obstrucción
Los trabajos de temporizador de larga duración, como los de "Procesamiento de datos de uso de Microsoft SharePoint Foundation", tardan cada vez más tiempo en completarse en cada iteración.
Incapacidad de abrir un sitio de SharePoint y un mensaje de error similar al siguiente:
Unexpected System.Web.HttpException: Request timed outSe produce un error de tiempo de espera de representación del sitio al cargar la navegación, y aparece el siguiente mensaje de error:
PortalSiteMapProvider was unable to fetch children for nodeUso elevado de CPU en el servidor que ejecuta SQL Server cuando procesa consultas de SharePoint
Causa
Estos problemas pueden deberse a estadísticas de base de datos obsoletas. SharePoint ejecuta un trabajo del temporizador diariamente para actualizar las estadísticas de la base de datos mediante el procedimiento SQL "proc_updatestatistics". Sin embargo, por varias razones, es posible que este trabajo del temporizador no se complete o no actualice todas las tablas de forma coherente. Por ejemplo, si una copia de seguridad se ejecuta en la base de datos de contenido de SQL Server simultáneamente con el trabajo del temporizador de SharePoint, el trabajo no continuará.
Cuando se completa el trabajo del temporizador de SharePoint que actualiza las estadísticas, se pueden escribir los siguientes eventos en los registros de ULS:
- e9bf "Error al actualizar las estadísticas en la base de datos", {0}
- cm1y "Actualización de estadísticas en la base de datos", {0}
- dbl2 "Omitir la actualización de estadísticas de la base de datos {0} porque su estado es {1}"
- cm1x "Actualización de estadísticas en todas las bases de datos de {0}"
Si estas condiciones no se supervisan estrechamente y si no se realizan acciones correctivas, las estadísticas de base de datos se vuelven obsoletas y, finalmente, se producen problemas de rendimiento de SharePoint.
Resolución
Para evitar estos síntomas y posibles interrupciones del servicio, se deben implementar planes de mantenimiento de SQL Server para mantener actualizadas las estadísticas de base de datos de contenido de SharePoint mediante la opción FULLSCAN. Para obtener más información, consulte Estadísticas de índice.
Al implementar el plan de mantenimiento de SQL Server para actualizar las estadísticas de las bases de datos de SharePoint, no es necesario deshabilitar el trabajo de SharePoint. Sin embargo, dado que estas tareas de mantenimiento realizan funciones similares desde ambas ubicaciones, se permite deshabilitar la regla "Las bases de datos usadas por SharePoint tienen estadísticas de índice obsoletas" del Análisis de Salud de la finca de SharePoint si las bases de datos están siendo administradas por SQL Server. Para obtener más información sobre cómo administrar el trabajo de actualización de índices desde SharePoint Server, vea Bases de datos usadas por SharePoint tienen estadísticas de índice obsoletas (SharePoint 2013).
Más información
Actualizar las estadísticas de las bases de datos de contenido de SharePoint, con la opción FULLSCAN, a diario desde SQL Server es un procedimiento recomendado. Para obtener más información, vea Procedimientos recomendados para SQL Server en una granja de servidores de SharePoint Server y mantenimiento de bases de datos para SharePoint Foundation 2010.
Sin embargo, si la granja de Servidores de SharePoint está experimentando problemas de rendimiento debido a estadísticas obsoletas, la siguiente información se puede usar como un paso de mitigación único para solucionar este problema.
Para mostrar información de estadísticas de base de datos de una base de datos específica, ejecute la consulta siguiente:
-- Checking the DB Stats
select a.id as 'ObjectID', isnull(a.name,'Heap') as 'IndexName', b.name as 'TableName',
stats_date (id,indid) as stats_last_updated_time
from sys.sysindexes as a
inner join sys.objects as b
on a.id = b.object_id
where b.type = 'U'
Para obtener más información sobre la revisión de estadísticas de base de datos, consulte DBCC SHOW_STATISTICS.
Para actualizar las estadísticas de base de datos en una base de datos única que usa la opción FULLSCAN, ejecute la consulta siguiente:
-- Update DB Stats
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
Nota importante La opción "sp_MSforeachtable" es un procedimiento no documentado que se proporciona "tal cual" y solo se debe usar para mitigar el problema inmediato. No se recomienda usar este procedimiento como parte de un plan de mantenimiento normal. En su lugar, consulte la documentación de UPDATE STATISTICS (Transact-SQL) sobre cómo implementar un plan para ACTUALIZAR ESTADÍSTICAS mediante la opción FULLSCAN.
En función de cómo se hayan quedado obsoletas las estadísticas de la base de datos, es posible que tenga que borrar la memoria caché del plan de consulta ejecutando el comando DBCC FREEPROCCACHE después de actualizar las estadísticas de la base de datos. Encontrará la sintaxis y los argumentos de este procedimiento en DBCC FREEPROCCACHE (Transact-SQL). Esto garantiza que las nuevas consultas usen el plan de ejecución óptimo después de actualizar las estadísticas de la base de datos. Por ejemplo, consulte la consulta siguiente:
-- Remove all elements from the plan cache
DBCC FREEPROCCACHE
Importante
Al ejecutar el comando DBCC FREEPROCCACHE se borra la memoria caché de todos los planes de consulta de en la instancia de SQL. Este comando debe entenderse bien antes de ejecutarlo durante las horas de producción.
Si el comando DBCC FREEPROCCACHE no se ejecutó después de actualizar las estadísticas de base de datos obsoletas, es posible que las consultas con planes de ejecución ineficaces sigan residiendo en la memoria caché y se usen. Si este es el caso, fuerza una recompilación en el procedimiento almacenado especificado mediante el procedimiento almacenado (vea sp_recompile (Transact-SQL)). Por ejemplo, consulte la consulta siguiente:
USE SP2013_Content_DB
GO
sp_recompile proc_getwebnavstruct
Ejecutar el comando sp_recompile junto con los parámetros de procedimiento, función o tabla tienen como destino un único elemento de la memoria caché para su eliminación sin afectar a la instancia.
¿Todavía necesitas ayuda? Vaya a La comunidad de SharePoint.