Manutenção dos bancos de dados para o SharePoint Server 2010

 

Tópico modificado em: 2016-11-30

Resumo:  Saiba como manter os bancos de dados que hospedam dados e definições de configuração do Produtos do Microsoft SharePoint 2010. Leia as diretrizes e os exemplos de estudo das estratégias e tarefas recomendadas de manutenção do banco de dados.

Aplicável a: Microsoft SharePoint Server 2010, Microsoft SharePoint Foundation 2010

Autores: Bill Baer e Bryan Porter

Revisor Técnico: Paul S. Randal (SQLskills.com (em inglês))

Conteúdo

  • Introdução

  • Usando o Comando do Console do Banco de Dados (DBCC) CHECKDB para verificar por erros de consistência

  • Sobre o DBCC CHECKDB

  • DBCC CHECKDB e desempenho

  • Medir e reduzir a fragmentação de índice

  • Reconstrução de índice online contra offline

  • Medir a fragmentação em um banco de dados do SQL Server 2008 ou 2005 (sys.dm_db_index_physical_stats)

  • Reduzindo a fragmentação de um banco de dados

  • Reduzindo a fragmentação de uma tabela específica e seus índices

  • Desempenho do índice de ajuste fino configurando o fator de preenchimento

  • Reduzindo os arquivos de dados

  • Criando planos de manutenção do SQL Server 2008

  • Conclusão

Observação

Antes de implementar qualquer tarefa de manutenção do banco de dados ou modificar os bancos de dados do SharePoint 2010, leia Suporte para mudanças dos bancos de dados que são usados pelos produtos do servidor do Office e pelo Windows SharePoint Services.

Introdução

A manutenção do banco de dados de rotina é fundamental para a operação suave dos bancos de dados do Microsoft SharePoint 2010.

As tarefas de manutenção recomendadas para os bancos de dados do SharePoint 2010 incluem as seguintes:

  • Verificar a integridade do banco de dados.

  • Desfragmentar os índices os reorganizando ou reconstruindo.

  • Definir o fator de preenchimento para um servidor.

Observação

Este artigo discute a manutenção do banco de dados; não discute o planejamento da capacidade ou desempenho. Para obter mais informações sobre a capacidade ou planejamento de capacidade, consulte Planejamento e configuração de armazenamento e capacidade do SQL Server (SharePoint Server 2010).

Embora as versões anteriores dos Produtos e Tecnologias do SharePoint exigem a intervenção manual para realizar a desfragmentação do índice e manutenção de estatística, várias regras do Analisador de Integridade do SharePoint automatizam esse processo no SharePoint 2010. Estas regras avaliam a integridade dos índices de bancos de dados e estatísticas diárias e resolve automaticamente esses itens para os seguintes bancos de dados:

  • Configuração dos bancos de dados

  • Bancos de dados de conteúdo

  • Bancos de dados do perfil de aplicativo de serviço do perfil de usuário

  • Bancos de dados sociais do aplicativo de serviço do perfil de usuário

  • Bancos de dados de relatório do aplicativo de serviço do Web Analytics

  • Bancos de dados de preparo do aplicativo de serviço do Web Analytics

  • Bancos de dados do Word Automation Services

É possível realizar tarefas de manutenção do banco de dados executando os comandos Transact-SQL ou executando o Assistente de Manutenção de Banco de Dados. Esse artigo descreve os comandos Transact-SQL que você pode usar e explicar como criar planos de manutenção de banco de dados usando o Assistente de Manutenção de Banco de Dados do Microsoft SQL. (Os exemplos detalhados são para o Microsoft SQL Server 2008 R2 e Microsoft SQL Server 2005.)

Usando o Comando do Console do Banco de Dados (DBCC) CHECKDB para verificar erros de consistência

Inicie suas operações de manutenção de rotina com verificações de consistência para garantir que seus dados e índices não estão corrompidos. É possível usar a declaração CHECKDB do Comando do Console do Banco de Dados (DBCC) CHECKDB para realizar uma verificação de consistência interna dos dados e páginas de índice.

A maioria dos problemas de consistência do banco de dados resulta de erros do subsistema E/S. No entanto, outros fatores e eventos podem afetar a consistência do banco de dados; por exemplo, um desligamento inadequado de um servidor do banco de dados ou uma falha da unidade. Problemas de disponibilidade e desempenho observados podem, algumas vezes, serem sintomas de problemas de consistência do banco de dados subjacente. realize verificações de consistência do banco de dados pelo menos uma vez por semana em seu banco de dados SharePoint 2010 e quando eventos como uma falha do subsistema E/S ou do servidor do banco de dados ocorrer.

Sobre o DBCC CHECKDB

O DBCC CHECKDB verifica a integridade lógica e física de todos os objetos no banco de dados especificado realizando as seguintes operações:

  • Executa o equivalente do DBCC CHECKALLOC para verificar as estruturas de alocação no banco de dados.

  • Executa o equivalente do DBCC CHECKTABLE em cada tabela e exibição no banco de dados para verificar sua integridade lógica e física.

  • Executa o equivalente do DBCC CHECKCATALOG no banco de dados para verificar a consistência dos metadados no banco de dados.

Recomendamos que você execute o DBCC CHECKDB ao invés das operações individuais (comandos DBCC CHECKALLOC, DBCC CHECKTABLE e DBCC CHECKCATALOG) porque o DBCC CHECKDB identifica o maior intervalo possível de erros e é mais seguro executar em um ambiente de produção.

O DBCC CHECKDB usa muita memória, E/S e recursos de CPU. Ao invés de executar o DBCC CHECKDB no seu sistema de produção, é possível executá-lo em um backup restaurado dos seus bancos de dados do SharePoint em um servidor diferentes e descarregar a carga de trabalho de verificação de consistência do sistema de produção.

Recomendamos que você execute primeiro o DBCC CHECKDB e, se revelar erros, restaure o banco de dados afetado usando seus backups mais recentes.

Importante

Não é possível executar o DBCC CHECKDB WITH REPAIR_ALLOW_DATA_LOSS. No entanto, é possível executar o DBCC_CHECKDB WITH REPAIR_FAST e REPAIR_REBUILD porque estes comandos atualizam os índices apenas do banco de dados associado.

A seguir está um exemplo de saída do 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 obter mais informações sobre como usar o DBCC CHECKDB com o SQL Server 2008, consulte DBCC CHECKDB (Transact-SQL).

DBCC CHECKDB e desempenho

Recomendamos que você execute verificações de consistência durante as horas de não produção porque o DBCC CHECKDB é extremamente intenso nos recursos (E/S, CPU, memória e espaço tempdb). Há uma concepção errada comum de que o DBCC CHECKDB adquire travas de bloqueio, mas isso não é verdade desde o SQL Server 2000. Para obter mais informações, consulte Um mito DBA do SQL Server por dia: (2/30) o DBCC CHECKDB causa bloqueio (em inglês).

Você pode descobrir que executar o DBCC CHECKDB usa muitos recursos para o seu sistema de produção. Neste caso, não tente executar verificações de consistência uma tabela por vez. A melhor forma de reduzir a sobrecarga de uma verificação de integridade no sistema de produção é usar uma das seguintes opções:

  • Usar a opção WITH PHYSICAL_ONLY para reduzir o uso de CPU e memória.

  • Restaurar um backup de banco de dados em um SQL Server separado e executar verificações de consistência na cópia restaurada do banco de dados.

Para obter mais informações sobre estas opções, consulte o blog de Paul S. Randal, CHECKDB de cada ângulo: opções da verificação de consistência para um VLDB (em inglês).

Medir e reduzir a fragmentação de índice

A fragmentação de índice ocorre quando a ordem lógica das páginas em uma tabela ou índice (conforme definido pela chave de índice) difere da ordem física das páginas nos arquivos de dados. Também pode significar que a densidade de dados nas páginas de arquivos de dados está baixa, o que resulta em espaço de disco, memória e E/S desperdiçados. A fragmentação de índice pode ser resultado de várias inserções, atualizações ou exclusões na tabela. As seguintes ilustrações contrastam um índice não fragmentado novo com um índice que está fragmentado após várias inserções, atualizações e exclusões. A seta vermelha exibe a ordem física do índice; as setas vermelhas exibem a ordem lógica das páginas de índice.

Figura 1. Índice não fragmentado (Fonte da imagem: Paul S. Randal)

Índice não fragmentado

 

Figura 2. Índice fragmentado (Fonte da imagem: Paul S. Randal)

Índice fragmentado

 

Como as inserções, atualizações e exclusões não são distribuídas igualmente entre as linhas da tabela e índices, o preenchimento (ou densidade de dados) de cada página pode variar durante o tempo. Para consultas que podem digitalizar partes ou todos os índices de uma tabela, a fragmentação pode causar mais leituras de páginas, que prejudica a varredura paralela dos dados e pode afetar significantemente o desempenho de pesquisa.

A fragmentação de índice pode resultar em uma diminuição no desempenho e ineficiência do uso de espaço e os índices podem ser fragmentados rapidamente nos bancos de dados que têm apenas uso moderado.

Antes de implementar um plano de manutenção de fragmentação de índice, determine quais tabelas e índices estão mais fragmentados. Em seguida, crie um plano de manutenção para reconstruir e reorganizar estes índices.

Por exemplo, no SharePoint 2010, uma tabela que se torna frequentemente fragmentada é AllDocs, que contém bibliotecas de documento, seus documentos associados, listas, itens de listas e os respectivos metadados.

O nível de fragmentação de um índice é a porcentagem de páginas de índice que não estão na mesma ordem lógica e física.

Reconstrução de índice online contra offline

A reconstrução de índice online está disponível no SQL Server Enterprise, apenas as edições Developer e Evaluation. Os métodos descritos neste artigo levam estas restrições em conta. Os procedimentos no artigo retornam a uma reconstrução de índice offline se a edição do SQL Server hospedando um banco de dados específico não suporta a reconstrução de índice online ou se o índice que está sendo reconstruído não é elegível para uma reconstrução de índice online. Um índice pode não ser elegível para uma reconstrução online devido a presença de grandes colunas de objeto (LOB), como colunas com tipos de dados NVARCHAR(MAX), IMAGE e assim por diante.

Para obter mais informações sobre a reconstrução de índice online, consulte Como as operações de índice online funcionam. Quando uma reconstrução de índice offline é realizada, os bloqueios de nível da tabela são obtidos durante o processo de reconstrução, o que pode evitar que a tabela seja gravada ou até mesmo acessada. Vários índices nos bancos de dados do SharePoint são sempre reconstruídos usando a reconstrução de índice offline devido as colunas LOB.

Mesmo se a reconstrução de índice online é usada, ainda há dois pontos na operação onde os bloqueios de tabela são mantidos momentaneamente e esses eles podem causar o bloqueio. Como resultado, recomendamos que você sempre programe as atividades de reconstrução de índice durante os períodos de baixa atividade.

Medir a fragmentação em um banco de dados do SQL Server 2008 ou 2005 (sys.dm_db_index_physical_stats)

No SQL Server 2008 ou SQL Server 2005, use a exibição de gerenciamento dinâmico sys.dm_db_index_physical_stats para determinar a fragmentação dos índices em uma tabela ou exibição específica.

Para medições de fragmentação, recomendamos que você monitore a coluna avg_fragmentation_in_percent. O valor do avg_fragmentation_in_percent deve ser o mais próximo de zero possível para obter o melhor desempenho. No entanto, os valores de 0 por cento até 10 por cento podem ser aceitáveis. Para obter mais informações, consulte sys.dm_db_index_physical_stats.

A tabela a seguir mostra exemplos de resultados do sys.dm_db_index_physical_stats, com um valor de 9.375 para o avg_fragmentation_in_percent em uma linha.

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 a exibição de gerenciamento dinâmico sys.dm_db_index_physical_stats

  1. Na barra de tarefas, clique em Iniciar, aponte para Todos os programas, Microsoft SQL Server 2008 e clique em SQL Server Management Studio.

    Para usar o sys.dm_db_index_physical_stats com um objeto do banco de dados, você deve conhecer a ID do banco de dados e a ID do objeto.

  2. Selecione o banco de dados de conteúdo no Explorador de Objetos e clique em Nova consulta. Execute o seguinte script.

    SELECT DB_ID() AS [Database ID];

    Observação

    Quando você usar o DB_ID sem especificar um nome de banco de dados, o nível de compatibilidade do banco de dados atual deve ser 100 (um banco de dados do SQL Server 2008) ou 90 (um banco de dados do SQL Server 2005). Se você já atualizou de uma versão anterior do SQL Server, você deve especificar um nome de banco de dados na declaração DB_ID. Para obter mais informações sobre os níveis de compatibilidade, consulte sp_dbcmptlevel (Transact-SQL).

  3. Execute o sys.dm_db_index_physical_stats no banco de dados ou objeto selecionado. É possível especificar o banco de dados e também uma tabela ou índice.

    Use a sintaxe a seguir quando executar o 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 }
    )
    

    Tenha cuidado ao usar o DMV sys.dm_db_index_physical_stats porque pode ser muito intensivo nos recursos. Consulte Dentro do sys.dm_db_index_physical_stats (em inglês) para um manual completo que explica as várias formas de usá-lo.

Reduzindo a fragmentação de um banco de dados

Use a diretriz a seguir para reduzir o nível da fragmentação de índice.

Execute as regras do Analisador de Integridade da manutenção do banco de dados

O SharePoint 2010 inclui a estrutura das regras do Analisador de Integridade. A estrutura possui várias regras que monitoram a integridade e o bem estar de um ambiente do SharePoint e, em alguns casos, toma ações para corrigir determinados tipos de problemas.

O SharePoint 2010 inclui várias regras que são pertinentes para a manutenção do banco de dados de conteúdo. Existem regras que reduzem automaticamente a fragmentação de índice para alguns bancos de dados do SharePoint e regras que verificam as estatísticas desatualizadas, atualizando-as se necessário. Estas regras do Analisador de Integridade substituem o trabalho do timer de Estatísticas do Banco de Dados atualizado introduzido no Service Pack 2 para Produtos e Tecnologias do SharePoint. Por padrão, estas regras são configuradas para executar em uma programação que varia de diariamente, semanalmente a sob demanda, dependendo da regra de destino.

Todas as regras do Analisador de Integridade configuradas para executar diariamente e associadas com um determinado serviço do SharePoint são executadas pelo mesmo trabalho de timer. Ajustar a programação deste trabalho de timer será ajustado também quando o Analisador de Integridade configurado para execução diária e associado àquele serviço irá executar durante o dia. Todas as regras discutidas neste artigo estão associadas ao serviço de Timer do SharePoint.

As regras do Analisador de Integridade que são configuradas para executar em um intervalo de tempo diferente (como semanalmente) ou associado com um serviço diferente possuem trabalhos de timer distintos. Se você configurar uma regra do Analisador de Integridade para executar semanalmente, esta regra é executada com o trabalho de timer que está configurado para executar semanalmente para o serviço específico no qual a regra do Analisador de Integridade está associada. Em outras palavras, a regra executa na programação definida para aquele trabalho de timer.

É possível executar as regras do Analisador de Integridade manualmente clicando em Executar agora na faixa de opções da página Regras do Analisador de Integridade na Administração Central. Executar estas regras avalia a integridade dos índices e estatísticas; também reconstrói e recalcula o índice conforme adequado.

Os bancos de dados usados pelo SharePoint possuem índices fragmentados. Executar esta regra realiza as seguintes tarefas:

  • A regra relata os índices como fragmentados. Como a avaliação da integridade do índice é uma operação cara, após a regra do Analisador de Integridade ser executada, esta regra sempre relata os índices como fragmentados para acionar a ação corretiva.

  • Para cada banco de dados do SharePoint, a ação de regra procura, e se encontra, executa o procedimento armazenado proc_DefragmentIndices, que constrói uma lista de todos os índices no banco de dados. O nível presente de fragmentação é avaliado em cada índice. Qualquer índice que está fragmentado mais de 30 por cento é considerado para reconstrução.

  • Se a edição do SQL Server suporta a reconstrução de índice online, uma reconstrução de índice online é tentada para cada índice. Se isso falhar, (por exemplo, o índice subjacente pode não suportar a reconstrução online por causa das colunas LOB) uma reconstrução de índice offline é realizada.

Como observado anteriormente, esta regra não é usada em cada banco de dados em um ambiente do SharePoint. Determinados bancos de dados usam diferentes regras para realizar atividades de manutenção similares.

Pesquisa – Um ou mais bancos de dados de propriedade possuem índices fragmentados. Esta regra mantém os índices nos Bancos de Dados de Propriedade de Pesquisa do SharePoint 2010 Enterprise. Por padrão, esta regra é configurada para executar semanalmente em qualquer servidor no farm. Todo processamento desta regra, incluindo as ações corretivas, ocorrem durante a fase de Check da regra. Isto significa que se você deseja gerenciar a reconstrução de índice para o Banco de Dados de Propriedade de Pesquisa da Empresa, não é suficiente simplesmente configurar esta regra para não reconstruir índices automaticamente. Você deve desabilitar a regra completamente se não deseja que o SharePoint 2010 execute automaticamente as operações de manutenção de índice.

A execução de Search - One or more property databases have fragmented indices realiza as seguintes tarefas:

  • A regra confirma que o ambiente está em um estado onde é seguro realizar uma reconstrução de índice.

  • Para cada banco de dados de propriedade que está configurado para os aplicativos de pesquisa no farm local, a regra executa o procedimento de armazenamento do proc_MSS_DefragSearchIndexes, que reconstrói uma lista de todos os índices que possuem uma fragmentação média acima de 10%.

  • Cada índice na lista que afeta o desempenho do banco de dados Propriedade é reconstruído. Se a edição do SQL Server suporta a reconstrução de índice online, uma reconstrução online é realizada. Se uma reconstrução online é tentada, mas falha, o índice é reconstruído offline.

Pesquisa - Um ou mais bancos de dados podem ter índices fragmentados. Esta regra mantém os índices nos Bancos de Dados de Propriedade de Pesquisa da Empresa do SharePoint 2010. Por padrão, esta regra é configurada para executar semanalmente em qualquer servidor no farm. Todo o processamento desta regra, incluindo ações corretivas, ocorre durante a fase Check da regra. Isto significa que se você deseja gerenciar reconstruções de índice para o Banco de Dados de Propriedade de Pesquisa da Empresa, não é suficiente apenas configurar esta regra para não reconstruir índices automaticamente. Você deve desabilitar a regra completa se não deseja que o SharePoint 2010 execute automaticamente as operações de manutenção de índice.

A execução de Search - One or more property databases have fragmented indices realiza as seguintes tarefas:

  • A regra confirma que o ambiente está em um estado onde é seguro realizar uma reconstrução de índice.

  • Para cada banco de dados de propriedade que está configurado para os aplicativos de pesquisa no farm local, a regra executa o procedimento de armazenamento do proc_MSS_DefragSearchIndexes, que reconstrói uma lista de todos os índices que possuem uma fragmentação média acima de 10%.

  • Cada índice na lista que afeta o desempenho do banco de dados Propriedade é reconstruído. Se a edição do SQL Server suporta a reconstrução de índice online, uma reconstrução online é realizada. Se uma reconstrução online é tentada, mas falha, o índice é reconstruído offline.

Pesquisa - Um ou mais bancos de dados de rastreamento podem ter índices fragmentados. Esta regra mantém os índices nos Bancos de Dados de Rastreamento de Pesquisa da Empresa do SharePoint 2010. Por padrão, esta regra é configurada para executar somente sob demanda. Quando executada, pode executar de qualquer servidor no farm.

A regra relata índices em um banco de dados de rastreamento como fragmentado porque a verificação da fragmentação em um banco de dados é uma operação cara. Basta desabilitar a atividade "Reparar" para que esta regra resulte em um relatório onde todos os bancos de dados de rastreamento não estão íntegros, mesmo quando os bancos de dados de rastreamento tiveram seus índices reconstruídos recentemente.

Para manter os índices nos bancos de dados de rastreamento manualmente, desabilite completamente a regra Search - One or more crawl databases may have fragmented indices.

A execução de Search - One or more crawl databases may have fragmented indices realiza as seguintes tarefas:

  • A regra confirma que o ambiente está em um estado onde é seguro realizar uma reconstrução de índice.

  • Para cada banco de dados Rastreamento que está configurado para os aplicativos de pesquisa no farm local, a regra executa o procedimento armazenado proc_MSS_DefragGathererIndexes.

  • Cada índice no banco de dados Rastreamento da lista é reconstruído. Se a edição do SQL Server suporta a reconstrução de índice online, uma reconstrução de índice online é realizada. Se uma reconstrução de índice online é tentada, mas falha, o índice é reconstruído offline.

Importante

A regra Search - One or more crawl databases may have fragmented indices reconstrói cada índice em todos os bancos de dados Rastreamento independente do nível de fragmentação. Também permite a compactação de dados a nível da página, se suportado pela edição do SQL Server hospedando o banco de dados Rastreamento.

Devido a natureza do banco de dados Rastreamento, você geralmente não precisa desfragmentar este banco de dados com frequência. Execute esta regra após tiver realizado um rastreamento completo no seu conteúdo. Depois disso, monitore os índices no banco de dados Rastreamento por fragmentação e execute esta regra quando a fragmentação do índice crescer. A fragmentação do índice pode ocorrer devido a uma adição ou remoção repentina de uma grande quantidade de conteúdo rastreado; por exemplo, durante a expulsão de conteúdo que resulta de uma limpeza ambiental ou após a inserção de uma nova fonte de conteúdo, como um compartilhamento de arquivos ou um grande aplicativo Web do SharePoint.

Os seguintes bancos de dados não possuem um mecanismo de manutenção automatizado. Estes bancos de dados geralmente não possuem muita fragmentação. Monitore estes bancos de dados para fragmentação e reconstrói os índices nestes bancos de dados quando a fragmentação excede 30%.

  • Banco de dados de Administração de Pesquisa

  • Banco de dados de Repositório Seguro

  • Banco de dados de Serviço de Estado

  • Banco de dados de Sincronização de Perfil

  • Banco de dados de Uso

  • Banco de dados de Metadados Gerenciados

  • Banco de dados de Serviços de Conectividade Empresarial

  • Banco de dados de Serviços do PerformancePoint

Para obter mais informações sobre as mudanças suportadas pelos bancos de dados do SharePoint 2010, consulte Suporte para alterações aos bancos de dados que são usados pelos produtos de servidor do Office e pelo Windows SharePoint Services na Base de Dados de Conhecimento do Microsoft.

Se o desempenho de um banco de dados muito fragmentado ou tabela não é melhorado mensuravelmente pela desfragmentação frequente, você deve verificar o desempenho do subsistema E/S.

Reduzindo a fragmentação para uma tabela específica e seus índices

Se você deseja desfragmentar um índice associado com uma determinada tabela ao invés de todo um banco de dados, é possível reorganizar e reconstruir o índice.

  • Reorganizar um índice especifica que o nível de folha do índice é reorganizado. A reorganização de índice desfragmenta e compacta índices agrupados e não agrupados em tabelas e exibições e pode melhorar significantemente o desempenho da varredura. Reorganizar um índice usa o espaço alocado existente do índice. A reorganização é sempre realizada online para que a tabela subjacente esteja disponível aos usuários.

  • Reconstruir um índice especifica que uma nova cópia do índice é construída. Portanto, uma operação de reconstrução exige espaço extra suficiente para construir a nova cópia do índice antes de remover o índice antigo fragmentado. A reconstrução melhora o desempenho da varredura e buscas do índice. É possível reconstruir o índice com uma tabela online ou offline.

O nível de fragmentação de um índice determina o método que você deve usar para desfragmentá-lo ou se deve permanecer online ou offline. A tabela a seguir descreve o método de desfragmentação recomendado para diferentes níveis de fragmentação.

Nível de fragmentação Método de desfragmentação

Até 10%

Reorganizar (online)

10 a 75%

Reconstruir (online)

75%

Reconstruir (offline)

Observação

Usar os comandos DROP INDEX e CREATE INDEX não é suportado nos bancos de dados do SharePoint 2010.

É possível reorganizar e reconstruir índices usando a declaração ALTER INDEX do SQL Server 2008 ou SQL Server 2005 ou o Assistente de Planejamento de Manutenção do SQL Server 2008 ou SQL Server 2005. Este artigo apresenta apenas as opções do SQL Server 2008 ou SQL Server 2005 em detalhes.

Usando o ALTER INDEX

O ALTER INDEX permite que o administrador do banco de dados realize operações de manutenção em um índice de uma tabela ou exibição. É possível usá-lo para desabilitar, reconstruir e reorganizar índices. Além disso, é possível usá-lo para definir as opções do índice. Na maioria dos casos, é possível reconstruir os índices enquanto o banco de dados está online, o que mantém os dados mais disponíveis para os usuários do que a reconstrução de índice offline.

Importante

DBCC DBREINDEX e DBCC INDEXDEFRAG suportado pelo SQL Server 200 para manutenção de índice. Estes comandos foram substituídos do SQL Server 2005 em diante e será removido na versão futura do SQL Server. Não use estes comandos para realizar uma manutenção de índice em um banco de dados do SharePoint 2010.

Observação

Quando um índice estiver sendo reconstruído offline, um bloqueio de tabela compartilhada é colocado na tabela para evitar que todas as operações, exceto SELECT. Os bancos de dados do SharePoint 2010 usam índices agrupados especificamente. Quando um índice agrupado está sendo reconstruído offline, um bloqueio de tabela exclusivo é colocado na tabela para evitar que os usuários o acessem.

É possível personalizar o seguinte script de amostra para reconstruir todos os índices em uma tabela.

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

Desempenho do índice de ajuste fino por configuração do fator de preenchimento

Para melhorar ainda mais o armazenamento de dados de índice e desempenho, use o fator de preenchimento. Quando os índices são criados ou reconstruídos, o valor do fator de preenchimento (1 a 100) determina a porcentagem de espaço que pode ser preenchida com dados em cada página de nível de folha. O espaço restante é reservado para crescimento futuro. Para várias situações, o nível de fator de preenchimento em todo servidor padrão de 0 (preencher cada página para 100% cheia) é optimal. No entanto, para o SharePoint 2010, uma configuração em todo servidor de 80 é optimal para suportar o crescimento e minimizar a fragmentação.

Observação

Nós não recomendamos que você defina o fator de preenchimento para tabelas ou índices individuais. Embora esse seja o método preferido para os bancos de dados do não SharePoint SQL Server, os testes mostram que os bancos de dados do SharePoint funcionam melhor com um fator de preenchimento de 80%.

Para exibir o valor do fator de preenchimento de um ou mais índices, consulte a exibição de catálogo sys.indexes. Para obter mais informações sobre a exibição consulte sys.indexes (Transact-SQL).

Para configurar o valor do fator de preenchimento em todos os servidores, use o procedimento armazenado do sistema sp_configure. Para obter mais informações, consulte spconfigure (Transact-SQL).

Reduzindo os arquivos de dados

No SQL Server 2008 e SQL Server 2005, é possível reduzir cada arquivo em um banco de dados (extensões de nome do arquivo .mdf, .ldf e .ndf) para remover páginas não usadas e recuperar espaço em disco. Os bancos de dados do SharePoint 2010 não reduzem automaticamente arquivos de dados, embora muitas atividades criem espaço não usado no banco de dados. As atividades que podem criar espaço não usado incluem a execução do comando Move-SPSite do Windows PowerShell e a exclusão de documentos, bibliotecas de documentos, listas itens de lista e sites.

Figura 3. Alocação do banco de dados

Alocação de banco de dados

 

O espaço livre é apenas liberado no final do arquivo; por exemplo, um arquivo do banco de dados de conteúdo de 60 GB com um tamanho alvo especificado de 40 GB libera o máximo de espaço possível no final (conceitualmente, o ‘lado direito’ final) 20 GB do arquivo do banco de dados. Se as páginas usadas estão incluídas no final 20 GB, estas páginas são posteriormente relocadas para o começo 40 GB do arquivo que está retida. É possível reduzir os arquivos do banco de dados individualmente ou como um grupo.

Execute apenas operações de redução raramente e apenas após realizar uma operação que remove muitos dados de um banco de dados e somente quando você não espera usar este espaço livre novamente. As operações de redução de arquivos de dados causam uma grande fragmentação de índice e usam muito recurso. Exemplos de quando você pode precisar reduzir arquivos do banco de dados é quando você realoca um grande número de conjuntos de sites de um banco de dados de conteúdo para outro banco de dados de conteúdo ou quando você excluir uma grande lista. Qualquer uma destas operações pode criar grandes quantidades de espaço não usado. Os arquivos do banco de dados podem ser reduzidos apenas até o ponto onde não há espaço livre restante. Portanto, um banco de dados de conteúdo no qual você raramente exclui conteúdo pode não ser beneficiado com a redução e provavelmente irá experimentar uma diminuição no desempenho quando tiver que crescer para acomodar dados adicionais sem acomodações específicas. Para obter mais informações, consulte Inicialização do arquivo do banco de dados.

Como a redução causa fragmentação de índice, não reduza arquivos do banco de dados regularmente. Em vez disso, reduza os arquivos do banco de dados apenas em resposta a grandes quantidades de espaço não usado que aparece como resultado das operações que impactam significantemente a quantidade relativa de espaço usado em um banco de dados. Se for possível, evite reduzir um banco de dados.

No entanto, se você precisa reduzir um banco de dados, use as seguintes diretrizes:

  • Não reduza automaticamente os bancos de dados ou configure um plano de manutenção que reduz programaticamente seus bancos de dados.

  • Reduza um banco de dados apenas quando os usuários ou administradores removerem 50% ou mais do conteúdo e você não espera reutilizar o espaço não usado.

  • Reduza apenas bancos de dados de conteúdo. Os usuários e administradores não excluem dados suficientes do banco de dados de configuração, o banco de dados de conteúdo da Administração Central e vários bancos de dados de aplicativo de serviço para conter espaço livre significativo.

  • Reduzir os bancos de dados é uma operação que usa muitos recursos. Portanto, se você realmente precisar reduzir um banco de dados, considere cuidadosamente ao programar a operação de redução.

  • Depois que você reduz um banco de dados, os índices neste banco de dados são fragmentados. Use ALTER INDEX… REORGANIZE para resolver a fragmentação. Se você não está configurado para permitir a inicialização de arquivo instantânea, reduza o banco de dados para o tamanho alvo que acomoda o tamanho exigido para o crescimento a curto prazo que você espera. Para obter mais informações, consulte Inicialização do arquivo de banco de dados.

É possível reduzir os bancos de dados e os arquivos dos bancos de dados manualmente para recuperar espaço executando as declarações DBCC SHRINKFILE e DBCC SHRINKDATABASE no SQL Server 2008 ou SQL Server 2005 Management Studio.

Para obter mais informações sobre porque reduzir um banco de dados danifica o desempenho e porque não deve ser realizado a não ser que seja absolutamente necessário, consulte Porque você não deve reduzir seus arquivos de dados (em inglês).

Reduzindo um banco de dados usando os comandos Transact-SQL

O DBCC SHRINKDATABASE reduz os dados e arquivos de log para um banco de dados específico. Para reduzir arquivos individuais, use o DBCC SHRINKFILE.

DBCC SHRINKDATABASE

O DBCC SHRINKDATABASE usa a seguinte sintaxe.

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

O database_name | database_id | 0 especifica o nome do banco de dados ou ID. Para selecionar o banco de dados atual, use 0.

O target_percent é o espaço livre, como uma porcentagem, que você deseja manter após reduzir o banco de dados.

O NOTRUNCATE compacta os dados nos arquivos de dados movendo as páginas alocadas do final de um arquivo para as páginas não alocadas na frente de um arquivo.

O TRUNCATEONLY libera todo espaço livre no final do arquivo para o sistema operação, mas não realiza qualquer movimento de página no arquivo.

Observação

Usar a opção TRUNCATEONLY não é suportado pelos bancos de dados de conteúdo do SharePoint 2010.

Para obter mais informações, consulte DBCC SHRINKDATABASE (Transact-SQL).

DBCC SHRINKFILE

O DBCC SHRINKFILE usa a seguinte sintaxe.

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

O file_name | file_id especifica o nome do arquivo ou ID.

O EMPTYFILE migra todos os dados do arquivo especificado para outros arquivos no mesmo grupo de arquivos.

Importante

Usar a opção EMPTYFILE não é suportado pelos arquivos do banco de dados do SharePoint 2010.

O target_size é o tamanho alvo do arquivo em megabytes, expressado como um número inteiro.

O NOTRUNCATE compacta os dados nos arquivos de dados movendo as páginas alocadas do final de um arquivo para as páginas não alocadas na frente de um arquivo.

O TRUNCATEONLY libera todo espaço livre no final do arquivo para o sistema operação, mas não realiza qualquer movimento de página dentro do arquivo.

Importante

Usar a opção TRUNCATEONLY não é suportado pelos bancos de dados de conteúdo do SharePoint 2010

Para obter mais informações, consulte DBCC SHRINKFILE (Transact-SQL).

Reduzindo um banco de dados usando o SQL Server 2008 Management Studio

Siga o procedimento abaixo.

Para reduzir um banco de dados usando o SQL Server 2008 Management Studio

  1. Na barra de tarefas, escolha Iniciar, Todos os programas, Microsoft SQL Server 2008, SQL Server Management Studio.

  2. No Explorador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server 2008 e expanda a instância.

  3. Expanda Bancos de dados, clique com o botão direito no banco de dados que deseja reduzir, escolha Tarefas, Reduzir, Arquivos.

  4. Selecione o tipo de arquivo e o nome do arquivo.

  5. Selecione Reorganizar arquivos antes de liberar o espaço não usado. Você também deve definir o valor Reduzir arquivo. Selecione esta opção para liberar qualquer espaço não usado no arquivo para o sistema operacional e para realocar as linhas para páginas não alocadas.

  6. Clique em OK.

Criando planos de manutenção do SQL Server 2008

É possível aplicar programaticamente várias operações de manutenção do banco de dados que são discutidas neste artigo pela implementação dos planos de manutenção do SQL Server. Os planos de manutenção podem automatizar e programar tarefas fundamentais para proteger seus dados. Usando os planos de manutenção no SQL Server 2008 ou SQL Server 2005, um administrador pode programar operações como a execução de verificações de consistência do banco de dados, reorganização de índices ou reconstrução de índices. Para obter mais informações, consulte os seguintes recursos:

Para configurar um plano de manutenção do banco de dados do SQL Server 2008

  1. Na barra de tarefas, escolha Iniciar, Todos os programas, Microsoft SQL Server 2008, SQL Server Management Studio.

  2. No Explorador de Objetos, conecte-se a uma instância do Mecanismo de Banco de Dados do SQL Server 2008 e expanda a instância.

  3. Escolha Gerenciamento, clique com o botão direito em Planos de manutenção e escolha Assistente de Planejamento de Manutenção.

  4. Escolha Próximo até você chegar à página Selecionar Propriedades do Plano.

    Figura 4. Página Selecionar propriedades do plano

    Página Selecionar Propriedades do Plano

  5. Nos campos Nome e Descrição, especifique um nome e uma descrição.

  6. Decida se deseja configura um ou mais planos de manutenção.

    • Para configurar um único plano de manutenção, selecione Programação única para todo o plano ou nenhuma programação.

    • Para configurar vários planos de manutenção com tarefas específicas, selecione Programações separadas para cada tarefa.

    Se você possui um ambiente com 10 ou mais bancos de dados de conteúdo ou mais de 200 GB de conteúdo, recomendamos que você configure planos de manutenção separados para oferecer a especificidade adequada e maximizar a janela de manutenção.

    Se você configurar vários planos de manutenção para um banco de dados, especifique um nome ou descrição quer permite você diferenciar os planos e seus objetivos, incluindo suas programações.

  7. Clique em Alterar para definir uma programação para um ou mais planos.

    A caixa de diálogo Propriedades de programação de trabalho é exibida.

    Figura 5. Caixa de diálogo Propriedades de programação de trabalho

    Caixa de diálogo Propriedades da Agenda de Trabalho

  8. Conclua a programação, clique em OK e em Próximo.

  9. Na página Selecionar tarefas de manutenção, selecione as tarefas de manutenção para incluir no plano e clique em Próximo.

    Figura 6. Página Selecionar tarefas de manutenção

    Página Selecionar Tarefas de Manutenção

    Considere as seguintes observações:

    • Um plano de manutenção deve incluir a reorganização de índice ou a reconstrução de índice, não ambos.

    • Um plano de manutenção nunca deve incluir a redução de um banco de dados.

    • Para determinar a duração de cada tarefa, teste cada tarefa individualmente antes de combinar tarefas em um único plano. Você pode precisar definir vários planos de manutenção em programações separadas para permitir que as tarefas sejam concluídas durante as horas que não afetem adversamente os usuários.

    • A Tarefa de limpeza de manutenção remove os arquivos que são deixados após uma manutenção programada.

  10. Na página Selecionar ordem da tarefa de manutenção, altere a ordem das tarefas do plano de manutenção se for necessário. Selecione uma tarefa e clique em Mover para cima ou Mover para baixo. Após você classificar as tarefas, clique em Próximo.

    Observação

    Se os seus bancos de dados são muito grandes, talvez seja necessário criar um plano de manutenção separado que verifique a integridade do banco de dados com menos frequência do que a manutenção de índice.

    Figura 7. Página Selecionar ordem da tarefa de manutenção

    Página Selecionar Ordem da Tarefa de Manutenção

  11. A seguir, o assistente o guia durante as configurações dos detalhes de cada tarefa. Na página Definir tarefas de verificação de integridade do banco de dados, selecione os bancos de dados para verificar a integridade e clique em Próximo.

    Observação

    É possível verificar com segurança todos os bancos de dados do SharePoint 2010 por integridade.

    Figura 8. Página Definir tarefas de verificação de integridade do banco de dados

    Página Definir Tarefa Integridade da Verificação do Banco de Dados

  12. Na página Definir tarefas de reorganização de índice, na lista Bancos de dados , especifique os bancos de dados que você deseja reorganizar os índices, marque a caixa de seleção Compactar objetos grandes e clique em Próximo.

    Figura 9. Página Definir tarefa de reorganização de índice

    Página Definir Tarefa Reorganizar Índice

  13. Na página Definir tarefas de reconstrução de índice, se você escolher a reconstrução de índices ao invés de reorganizar índices, especifique os bancos de dados na lista Bancos de dados.

  14. Selecione Alterar espaço livre por porcentagem de página, digite 80 e clique em Próximo.

    Alterar espaço livre por porcentagem define o fator de preenchimento para o banco de dados.

    Figura 10. Página Definir tarefas de reconstrução de índice

    Página Definir Tarefa Recompilar Índice

  15. Na página Definir tarefa de limpeza de manutenção, especifique os valores solicitados e clique em Próximo.

    Dica

    Nós recomendamos que você exclua os relatórios de texto do Plano de Manutenção.

    Figura 11. Página Definir tarefa de limpeza de manutenção

    Página Definir Tarefa Limpeza de Manutenção

  16. Na página Selecionar opções de relatório, selecione Gravar um relatório para um arquivo de texto, selecione um local dos arquivos e clique em Próximo até concluir o assistente.

    Figura 12. Selecionar opções de relatório

    Selecionar Opções de Relatório

Conclusão

Manter de forma consistente os bancos de dados que hospedam o SharePoint 2010 pode melhorar significantemente a saúde e o desempenho do seu sistema.

Certifique-se de que você possui backups confiáveis de todos os bancos de dados antes de implementar as operações de manutenção e planos de manutenção.

Antes de implementar um plano de manutenção ou operações de manutenção específicas que executem de forma consistente, teste o impacto das operações no seu sistema e a hora que devem ser executadas.

O máximo possível, defina qualquer operação de manutenção ou plano de manutenção para serem executados durante as horas inativas para minimizar o efeito do desempenho nos usuários.

See Also

Other Resources

Este tópico também está disponível como download