Desfragmentando unidades de disco de banco de dados do SQL Server
Este artigo fornece algumas diretrizes sobre a desfragmentação de unidades de banco de dados do SQL Server.
Versão original do produto: SQL Server
Número original do KB: 3195161
Os discos do SQL Server devem ser desfragmentados na camada do sistema operacional?
Isso depende do estado de fragmentação das unidades atuais. Geralmente, não faz mal e pode ajudar, supondo que você siga as precauções descritas na seção Precauções ao desfragmentar unidades de banco de dados do SQL Server. O único aspecto negativo é que você deve desligar o SQL Server , a menos que a ferramenta de desfragmentação ofereça suporte a recursos de dados transacionais. A boa notícia é que, depois de executar a desfragmentação, você realmente não precisa fazer isso novamente, a menos que tenha muitos Autogrowth e outros arquivos entrando e saindo dos discos. Certifique-se de entender todas as estratégias de cache de gravação que o utilitário usa. O cache por esse utilitário pode envolver um cache sem bateria e isso pode violar os requisitos do protocolo WAL.
Mais informações
Um desfragmentador de disco move todos os arquivos, incluindo o arquivo de banco de dados, para clusters contíguos em um disco rígido. Isso otimiza e acelera o acesso aos arquivos. Com exceção do sistema operacional Windows NT, se você não desfragmentar o disco rígido, o sistema operacional poderá ter que ir a vários locais físicos no disco para recuperar o arquivo do banco de dados, tornando o acesso ao arquivo mais lento.
Como o acesso a dados físicos é a parte mais cara de uma solicitação de E/S, a desfragmentação pode fornecer ganhos de desempenho para o SQL Server e outros aplicativos. Blocos de dados relacionados ao posicionamento próximos uns dos outros reduzem os requisitos de operação de E/S.
Vários utilitários de desfragmentação estão disponíveis no mercado hoje. Alguns utilitários permitem a desfragmentação em arquivos abertos, enquanto outros exigem a desfragmentação de arquivos fechados ou têm um desempenho melhor quando usados em condições de arquivos fechados. Além disso, alguns utilitários têm recursos transacionais, enquanto outros não.
Precauções ao desfragmentar unidades de banco de dados do SQL Server
Ao avaliar um utilitário de desfragmentação para uso com o SQL Server, verifique se o utilitário fornece recursos de dados transacionais. Especificamente, escolha um utilitário de desfragmentação que forneça os seguintes recursos de dados transacionais:
O setor original não é considerado movido até que o novo setor tenha sido estabelecido com êxito e os dados copiados com êxito.
O utilitário protege contra uma falha do sistema, como uma queda de energia, de uma forma segura que mantém os arquivos lógica e fisicamente intactos. Para garantir a integridade dos dados, um teste pull-the-plug é altamente recomendado quando um utilitário de desfragmentação está sendo executado em um arquivo baseado no SQL Server.
O protocolo WAL (Write-Ahead Logging) requer a prevenção de regravações de setor para evitar a perda de dados. O utilitário deve manter a integridade física do arquivo enquanto estiver executando qualquer movimentação de dados. O utilitário deve trabalhar nos limites do setor de maneira transacional para manter os arquivos do SQL Server intactos.
O utilitário deve fornecer mecanismos de bloqueio apropriados para garantir que o arquivo retenha uma imagem consistente para quaisquer modificações. Por exemplo, o utilitário deve garantir que o setor original não possa ser modificado quando for copiado para um novo local. Se as modificações fossem permitidas, o utilitário de desfragmentação poderia perder a gravação.
Os desfragmentadores de disco críticos que não fornecem esses recursos de dados transacionais não devem ser usados, a menos que a instância do SQL Server que usa os discos a serem desfragmentados tenha sido desligada para que você não esteja desfragmentando arquivos de banco de dados abertos.
A desfragmentação de arquivo aberto levanta vários problemas possíveis que a desfragmentação de arquivo fechado normalmente não levanta:
A desfragmentação de arquivo aberto afeta o desempenho. Os utilitários de desfragmentação podem bloquear seções do arquivo, impedindo que o SQL Server conclua uma operação de leitura ou gravação. Isso pode afetar a simultaneidade do servidor que está executando o SQL Server. Entre em contato com o fabricante da ferramenta de desfragmentação para saber como os arquivos são bloqueados e como isso pode afetar a simultaneidade do SQL Server.
A desfragmentação de arquivo aberto pode afetar o cache e a ordenação de gravação. Os utilitários baseados em arquivo aberto exigem componentes de caminho de E/S; Esses componentes não devem alterar a ordenação ou a natureza pretendida da operação de gravação. Se os locatários do protocolo write-through ou WAL forem interrompidos, é provável que ocorram danos ao banco de dados. O banco de dados e todos os arquivos associados são considerados uma única entidade. (Isso é abordado em muitos artigos da Base de Dados de Conhecimento da Microsoft, nos Manuais Online do SQL Server e em vários white papers.) Todas as gravações devem manter as sequências de ordenação de gravação originais e os recursos de gravação.
Recomendações
- Desfragmente o volume NTFS, a menos que ele tenha sido formatado, antes de criar um novo banco de dados ou mover bancos de dados existentes para o volume.
- Certifique-se de planejar e dimensionar seus dados SQL e arquivos de log adequadamente quando o banco de dados for criado pela primeira vez.
- Crie seus logs de transações anteriores ao SQL Server 2014 com o Crescimento Automático em mente se ele for usado.
- Desfragmente o disco ou discos nos quais residem os logs de transações. Isso evitará a fragmentação de arquivos externos do log de transações. Esse problema pode ocorrer se seus arquivos tiverem muito crescimento automático ou quando não for um disco dedicado que contém muitos bancos de dados, logs ou outros arquivos que foram modificados. Nessa situação, os arquivos (incluindo o arquivo de log de transações) podem ser intercalados e fragmentados.
- Se você estiver desfragmentando unidades de banco de dados que são discos de cluster, os discos de cluster deverão ser configurados para suspender o monitoramento de integridade (também conhecido como modo de manutenção).
- Para minimizar a fragmentação, não reduza os arquivos de banco de dados. Além disso, cultive-os manualmente em tamanhos que minimizem a atividade de crescimento.
- Mantenha seus arquivos de banco de dados em discos dedicados.
- Execute um backup completo antes de desfragmentar os locais que contêm o banco de dados SQL Server e os arquivos de backup.