Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Sobre estatísticas de banco de dados
Estatísticas para otimização de consulta são objetos que contêm informações estatísticas sobre a distribuição de valores em uma ou mais colunas de uma tabela ou exibição indexada. O otimizador de consulta usa essas estatísticas para estimar a cardinalidade ou o número de linhas no resultado da consulta. Essas estimativas de cardinalidade permitem que o otimizador de consulta crie um plano de consulta de alta qualidade.
Por exemplo, o otimizador de consulta pode melhorar o desempenho da consulta usando estimativas de cardinalidade para selecionar o operador de busca de índice em vez do operador de verificação de índice mais intensivo em recursos. Caso contrário, estatísticas desatualizadas podem diminuir o desempenho da consulta usando planos de consulta ineficientes.
Implantações do SharePoint de grandes empresas devem ter planos de manutenção de banco de dados para atualizar estatísticas de banco de dados em bancos de dados de conteúdo que residem no Microsoft SQL Server. Os clientes não devem depender apenas de trabalhos de manutenção de banco de dados baseados no SharePoint para executar essas tarefas. Para saber mais, confira Práticas recomendadas para o SQL Server em um farm do SharePoint Server.
Sintomas
Quando as estatísticas do banco de dados ficam desatualizadas, as instalações do SharePoint Server podem apresentar um ou mais dos seguintes sintomas:
Tempos de carga lentos e desempenho reduzido que pode gerar um erro HTTP 500 ao abrir uma página do site
Desempenho mais lento que gera mensagens de erro, como o seguinte exemplo:
Service unavailable Unknown SQL Exception 53 Server Error in '/' Application Runtime ErrorRealizar varreduras de pesquisa causa desempenho inesperado do SQL Server, bloqueio de banco de dados e de processos
Trabalhos de timer de execução prolongada, como os trabalhos de "Processamento de Dados de Uso do Microsoft SharePoint Foundation", que demoram progressivamente mais tempo para serem concluídos a cada iteração.
A incapacidade de abrir um site do SharePoint e uma mensagem de erro que se assemelha ao seguinte:
Unexpected System.Web.HttpException: Request timed outTempo limite de renderização do site quando você carrega a navegação e a seguinte mensagem de erro:
PortalSiteMapProvider was unable to fetch children for nodeAlto uso de CPU no servidor que executa o SQL Server quando processa consultas do SharePoint
Motivo
Esses problemas podem ser causados por estatísticas de banco de dados desatualizadas. O SharePoint executa um trabalho de temporizador diariamente para atualizar as estatísticas do banco de dados usando o procedimento SQL proc_updatestatistics. No entanto, por vários motivos, esse trabalho de temporizador pode não ser concluído ou pode não atualizar todas as tabelas de forma consistente. Por exemplo, se um Backup estiver em execução no banco de dados de conteúdo do SQL Server simultaneamente com o trabalho de temporizador do SharePoint, o trabalho não continuará.
Quando o trabalho de temporizador do SharePoint que atualiza estatísticas for concluído, os seguintes eventos poderão ser gravados nos logs do ULS:
- e9bf "Ocorreu um erro ao atualizar estatísticas no banco de dados {0}"
- cm1y "Atualizando estatísticas no banco de dados {0}"
- dbl2 "Ignorando a atualização de estatísticas do banco de dados {0} porque seu status é {1}"
- cm1x "Atualizando estatísticas em todos os bancos de dados em {0}"
Se essas condições não forem monitoradas de perto e se ações corretivas não forem executadas, as estatísticas do banco de dados ficarão desatualizadas e os problemas de desempenho do SharePoint eventualmente ocorrerão.
Resolução
Para evitar esses sintomas e possíveis interrupções de serviço, os planos de manutenção do SQL Server devem ser implementados para manter as estatísticas do banco de dados de conteúdo do SharePoint atualizadas usando a opção FULLSCAN. Para obter mais informações, consulte estatísticas de índice.
Ao implementar o plano de manutenção do SQL Server para atualizar as estatísticas em seus bancos de dados do SharePoint, não é necessário desabilitar o trabalho do SharePoint. No entanto, como essas tarefas de manutenção executam funções semelhantes de ambos os locais, é permitido desabilitar a regra "Bancos de dados usados pelo SharePoint têm estatísticas de índice desatualizadas" do Heath Analyzer do farm do SharePoint se os bancos de dados estiverem sendo gerenciados pelo SQL. Para obter mais informações sobre como gerenciar o trabalho de atualização de índice do SharePoint Server, consulte Bancos de dados usados pelo SharePoint com estatísticas de índice desatualizadas (SharePoint 2013).
Mais informações
Atualizar as estatísticas de bancos de dados de conteúdo do SharePoint, usando a opção FULLSCAN, diariamente do SQL Server é uma prática recomendada. Para obter mais informações, consulte as práticas recomendadas para o SQL Server em um farm do SharePoint Server e manutenção de banco de dados para o SharePoint Foundation 2010.
No entanto, se o farm do SharePoint estiver enfrentando problemas de desempenho devido a STATS desatualizados, as informações a seguir poderão ser usadas como uma etapa de mitigação única para aliviar esse problema.
Para exibir informações de estatísticas de banco de dados de um banco de dados específico, execute a seguinte consulta:
-- 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 obter mais informações sobre a revisão de estatísticas de banco de dados, consulte SHOW_STATISTICS DBCC.
Para atualizar as estatísticas de banco de dados em um único banco de dados que usa a opção FULLSCAN, execute a seguinte consulta:
-- Update DB Stats
EXEC sp_MSforeachtable 'UPDATE STATISTICS ? WITH FULLSCAN'
Observação importante A opção "sp_MSforeachtable" é um procedimento não documentado fornecido "no estado em que se encontra" e só deve ser usada para atenuar o problema imediato. Não recomendamos que você use este procedimento como parte de um plano de manutenção regular. Em vez disso, consulte nossa documentação UPDATE STATISTICS (Transact-SQL) sobre como implementar um plano para ATUALIZAR ESTATÍSTICAS, usando a opção FULLSCAN.
Dependendo de quão desatualizadas as estatísticas do banco de dados se tornaram, talvez seja necessário limpar o cache do plano de consulta executando o comando DBCC FREEPROCCACHE depois de atualizar as estatísticas do banco de dados. Você encontrará a sintaxe e os argumentos para este procedimento em DBCC FREEPROCCACHE (Transact-SQL). Fazer isso garante que novas consultas usem o plano de execução ideal depois que as estatísticas do banco de dados forem atualizadas. Por exemplo, consulte a seguinte consulta:
-- Remove all elements from the plan cache
DBCC FREEPROCCACHE
Importante
A execução do comando DBCC FREEPROCCACHE limpa o cache para todos os planos de consulta na instância do SQL. Esse comando deve ser bem compreendido antes de executá-lo durante o horário de produção.
Se o comando DBCC FREEPROCCACHE não tiver sido executado após atualizar as estatísticas de banco de dados desatualizadas, as consultas com planos de execução ineficientes ainda poderão residir em cache e ser usadas. Se esse for o caso, force um recompilação no procedimento armazenado especificado usando o procedimento armazenado (consulte sp_recompile (Transact-SQL)). Por exemplo, consulte a seguinte consulta:
USE SP2013_Content_DB
GO
sp_recompile proc_getwebnavstruct
A execução do comando sp_recompile junto com parâmetros de procedimento, função ou tabela tem como destino um único elemento no cache para remoção sem afetar a instância.
Ainda precisa de ajuda? Vá para a Comunidade do SharePoint.