Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

Criando planos de manutenção no SQL Server


Os planos de manutenção no SQL Server nos oferecem uma maneira fácil de organizar, configurar e agendar tarefas que garantem que o mecanismo de banco de dados e os bancos de dados nele hospedados sejam mantidos em forma.

Os Planos de Manutenção oferecem a um administrador de banco de dados a oportunidade de configurar tarefas importantes como indexação, atualizações de estatísticas, backups, limpezas de log e outros. No artigo anterior, já discutimos como criar um plano de manutenção básico para realizar a verificação de consistência do banco de dados. Neste artigo, faremos um passo a passo da criação de um plano de manutenção para uma instância de banco de dados que hospeda pequenos bancos de dados. No decorrer do passo a passo, explicarei as principais escolhas feitas em cada etapa no contexto de uma instância com um número moderadamente grande de pequenos bancos de dados. A ideia é configurar a manutenção desses bancos de dados sem precisar fazer um por um. O foco em bancos de dados pequenos visa evitar a sobrecarga de desempenho associada às operações de manutenção.

Plano de manutenção para tarefas semanais


Figura 1:Iniciar o assistente do plano de manutenção

Iniciamos o Assistente de Plano de Manutenção a partir do Pesquisador de Objetos>[Nome da Instância]>Gerenciamento>Planos de Manutenção (consulte a Figura 1). A primeira página do assistente nos dá uma visão geral das tarefas que podem ser configuradas. Embora existam outras maneiras de realizar essas tarefas usando código e agendamento de tarefas, o Assistente do Plano de Manutenção facilita bastante a realização ao lidar com um grande número de bancos de dados hospedados em uma instância.

Figura 2:Assistente de plano de manutenção

Na Figura 3, vemos o SQL Server expondo campos para nomear e descrever o Plano de Manutenção. A inserção de uma descrição do plano faz sentido para fins de documentação. Imagine assumir uma nova instância do SQL Server em uma nova empresa. Seria útil se você encontrasse descrições de objetos do SQL Server nos objetos. Você deve fazer o mesmo para os outros. Observe que a descrição que dei é apenas para ilustrar o ponto. Uma descrição mais detalhada será desejável em um ambiente de produção.

Figura 3:nomeando o plano de manutenção

Observe que na Figura 3 temos a opção de escolher se queremos usar um agendamento único para todas as tarefas ou um agendamento separado para cada tarefa. Optei por usar horários separados para ter a flexibilidade de escalonar as tarefas. Não queremos que muitas operações de manutenção sejam executadas simultaneamente ou consecutivamente por um longo tempo para evitar o risco de sobrecarregar os recursos do servidor. A decisão que você toma neste momento também pode depender da capacidade de recursos disponíveis para você e da janela de manutenção disponível. Algumas pessoas têm capacidade suficiente e gostariam de terminar a tarefa rapidamente durante cada execução. No cenário coberto por este artigo, estamos assumindo que a instância em questão não é usada durante o fim de semana.

Na Figura 4, escolhemos as tarefas que queremos executar. Uma das grandes vantagens do SQL Server é que cada tarefa é descrita na parte inferior da janela. Vale a pena trabalhar como DBA para entender o que você está fazendo, mesmo quando trabalha no “Windows”. Na minha experiência, muitos “administradores” têm o hábito de simplesmente clicar em “NEXT, NEXT, NEXT” porque estão com pressa para fazer a funcionalidade funcionar. Mas dedicar um tempo para entender o impacto do próximo “NEXT” ajuda a garantir que você esteja fazendo algo que agregará valor, não causará novos problemas.

Figura 4:Selecionando tarefas de manutenção

As tarefas que selecionamos são descritas a seguir:

A Verificar a integridade do banco de dados A tarefa executa verificações de consistência interna dos dados e páginas de índice no banco de dados.

O Índice de reorganização a tarefa desfragmenta e compacta índices clusterizados e não clusterizados em tabelas e exibições. Isso melhorará o desempenho da verificação de índice.

O Índice de reconstrução A tarefa reorganiza os dados nas páginas de dados e índice reconstruindo índices. Isso melhora o desempenho das verificações e buscas de índice. Essa tarefa também otimiza a distribuição de dados e espaço livre nas páginas de índice, permitindo um crescimento futuro mais rápido.

As Atualizar estatísticas A tarefa garante que o otimizador de consulta tenha informações atualizadas sobre a distribuição de valores de dados nas tabelas. Isso permite que o otimizador faça melhores julgamentos sobre as estratégias de acesso a dados.

A Limpeza do histórico A tarefa exclui dados históricos sobre operações de Backup e Restauração, SQL Server Agent e Plano de Manutenção. Este assistente permite especificar o tipo e a idade dos dados a serem excluídos.

O Banco de dados de backup (completo) A tarefa permite especificar os bancos de dados de origem, arquivos ou fitas de destino e opções de substituição para um backup completo.

A Limpeza de Manutenção A tarefa remove os arquivos que sobraram da execução de um plano de manutenção.

A Figura 5 mostra onde selecionamos a ordem em que essas tarefas são executadas. Isso é importante por alguns motivos. Por exemplo, não faz sentido executar uma atualização de estatísticas de índice após uma reconstrução de índice, pois uma reconstrução de índice também executa a atualização de estatísticas de índice no SQL Server. Veremos mais adiante neste artigo como lidamos com isso, dada a ordem que escolhemos. Outra consideração possível é que você pode decidir que faz mais sentido realizar um backup antes de prosseguir com certos tipos de manutenção.

Figura 5:Ordem das Tarefas

Na Figura 6, escolhemos em quais bancos de dados queremos aplicar a primeira tarefa de manutenção. Temos que fazer isso para cada uma das tarefas subsequentes também. Isso é importante no sentido de que alguns bancos de dados podem precisar ser isentos de tais operações. Por exemplo, onde você tem uma combinação de bancos de dados muito grandes (VLDBs) e bancos de dados muito pequenos na mesma instância (uma má ideia em si), talvez seja necessário excluir os VLDBs das recompilações de índice totalmente cegas. Nesse caso, você precisa identificar as tabelas-chave nesse VLDB e concentrar as reconstruções e outras operações de manutenção intensiva nas tabelas-chave. Neste exemplo, excluí os bancos de dados do sistema, pois posso planejar cuidadosamente as manutenções para eles separadamente. Acredito que seja mais seguro lidar com os bancos de dados do sistema separadamente, pois qualquer dano a eles pode afetar toda a instância.

Figura 6:determinar o escopo

Cada operação de manutenção tem seu próprio conjunto de opções. A Figura 7 mostra as opções que temos para decidir para DBCC CHECKDB. Eu me desviei um pouco das configurações padrão aumentando o MAXDOP para 2. Na Figura 8, optamos por executar essa tarefa à 1:00 AM nas noites de sábado e domingo.

Figura 7:Opções DBCC

Figura 8:Cronograma DBCC

A tarefa Reorganizar Índice também possui um conjunto específico de opções. Vale a pena mencionar o conjunto de condições que determinarão se um índice deve ser reorganizado ou não – 30% de fragmentação, contagem de mais de 1.000 páginas e usado pela última vez no máximo 28 dias novamente. Esta janela ressalta a necessidade de entender as opções que estamos fazendo. Para fazer essas opções corretamente, você precisa entender os índices e a indexação de forma razoável. Observe que escolhas semelhantes precisarão ser feitas na tarefa Rebuild Index. Além disso, observe que o limite de fragmentação recomendado para a Reorganização do Índice é, na verdade, 15% e não 30%.

Figura 9:reorganizar opções de índice

A Tarefa Reconstruir Índice oferece algumas outras opções além daquelas para Reorganização de Índice. (Ver Figura 10). Observe que escolhi classificar os resultados no TempDB. Para que essa escolha seja efetiva, é importante ajustar o TempDB adequadamente, pois a escolha implica que a ordenação dessa operação em TODOS os bancos de dados acontecerá no TempDB. Além disso, temos que configurar o cronograma para a reconstrução do índice. Também configurei MAXDOP para 2 para esta tarefa.

Figura 10:Opções de reconstrução do índice

Mencionamos anteriormente que quando uma reconstrução de índice é invocada no SQL Server, a atualização de estatísticas nos índices também é invocada por padrão. Portanto, quando configuramos a Tarefa de atualização de estatísticas, optamos por atualizar apenas estatísticas de coluna (Figura 11). Esta janela também nos dá a opção de fazer uma varredura completa ou amostragem. Como o contexto são bancos de dados pequenos, escolhemos a opção de varredura completa. Novamente, isso exige alguma compreensão das estatísticas.

Figura 11:Tarefa de atualização de estatísticas

Optamos por configurar o trabalho de limpeza para excluir quaisquer dados com mais de 4 semanas, conforme mostrado na Figura 12.

Figura 12:tarefa de limpeza do histórico

A Tarefa de Backup expõe várias opções de configuração em três guias! A Figura 13 mostra que optamos por limitar essa tarefa de backup aos bancos de dados do usuário. Nós o agendamos para as 3:00 AM aos domingos, e vamos além para escolher o destino do backup como E:\MSSQL\Backup (veja a Figura 14). Na terceira aba (Figura 15), fazemos escolhas para verificar o backup e também realizar um checksum, assim estamos mais perto de ter certeza de que o backup é confiável.

Figura 13:Tarefa de backup do banco de dados

Figura 14:destino de backup

Figura 15:Opções de backup

Por fim, configuramos uma tarefa que gerenciará a retenção do nosso log do Plano de Manutenção. (Figura 16). Novamente, optamos por excluir todos os registros de log com mais de 4 semanas. A Figura 17 mostra as opções que selecionamos para garantir que as atividades do Plano de Manutenção sejam registradas e enviadas por correio para o grupo Database Admin. Obviamente, para que esta última opção funcione, devemos ter configurado o Database Mail e configurado os operadores corretamente.

Figura 16:Tarefa de limpeza do plano de manutenção

Figura 17:opções de relatório

As Figuras 18 e 19 mostram um resumo das tarefas que configuramos e comentários sobre a conclusão bem-sucedida do assistente.

Figura 18:Resumo das opções

Figura 19:Conclusão do assistente

Plano de manutenção para tarefas diárias


Também podemos configurar Planos de manutenção separados para outros fins, como simplesmente ser organizado. Não precisamos configurar um plano separado para Tarefas Diárias, pois podemos configurar os agendamentos separadamente para cada tarefa. Uma razão pela qual podemos querer configurar um plano separado pode ser selecionar um conjunto diferente de tarefas direcionadas a um conjunto diferente de bancos de dados (na verdade, ainda podemos fazer isso no plano existente).

No exemplo a seguir, vamos supor que temos outro conjunto de bancos de dados grandes na mesma instância com objetivos de ponto de recuperação diferentes. Em seguida, precisamos usar uma estratégia de backup diferente – um agendamento diário de Backup Diferencial e um agendamento de Backup de Log de Transação por hora, além de um backup completo semanal para garantir um RPO de 1 hora. (Ver Figuras 21 e 22).

Figura 20:Plano de Manutenção de Tarefas Diárias

Figura 21:tarefas de backup diferencial e Tlog

Figura 22:Ordem de Tarefa do Plano de Manutenção Diário

Para o Backup Diferencial, escolhemos uma programação diária que é acionada diariamente às 2h. (Ver Figura 23). E escolha as mesmas opções de backup que fizemos para o Backup Semanal Completo configurado anteriormente.

Figura 23:Cronograma do Plano de Manutenção Diário

Figura 24:local de backup diferencial

Figura 25:Opções de backup diferencial

Por outro lado, optamos por agendar o backup diferencial para ocorrer a cada hora de todos os dias. Também garantimos que cada conjunto de backup de banco de dados seja armazenado em um diretório com seu próprio nome. O resto do assistente é muito parecido com o passo a passo anterior.

Figura 26:Agendamento de backup do log de transações

Figura 27:local do backup do log de transações

Figura 28:Opções de backup do log de transações

Conclusão


Ao concluir o Assistente do Plano de Manutenção, acabamos com um Plano de Manutenção e um conjunto correspondente de Trabalhos do SQL Agent (consulte a Figura 29). Essencialmente, o Plano de Manutenção é uma coleção de pacotes SSIS e, ao examinar os trabalhos agendados, você descobrirá que a etapa de trabalho executada em cada trabalho de subplano é um Pacote SSIS (consulte a Figura 30).

Em um exemplo subsequente, mostraremos que podemos executar as tarefas do subplano anualmente. Também revisaremos os resultados da execução do plano de manutenção e solucionaremos erros relacionados à execução das etapas do trabalho. Também examinaremos o Registro do Plano de Manutenção.

Figura 29:trabalhos de agente SQL resultantes

Figura 30:Etapa de trabalho do pacote SSIS