Descartando índices não utilizados em um banco de dados SQL do Azure – Uma imagem do SQLEspresso

Descartando índices não utilizados em um banco de dados SQL do Azure – Uma imagem do SQLEspresso

cupom com desconto - o melhor site de cupom de desconto cupomcomdesconto.com.br


A manutenção do índice é um aspecto importante da integridade do banco de dados. Acima e além das recompilações e reorganizações regulares de índice, é importante entender o uso dos índices em seu banco de dados. A limpeza de índices não utilizados pode economizar muito overhead nas operações de Inserir / Atualizar / Excluir. Para atingir esse objetivo, normalmente executo um script como o mostrado abaixo e verifico se um índice teve ou não buscas ou varreduras como ponto de partida no meu regimento de limpeza.

Banco de dados SQL do Azure

Se o índice não mostra nenhuma utilização, eu investiguo para determinar se é algo que pode ser removido. Porém, esta semana algo me chamou a atenção. Eu estava olhando os índices de um cliente e notei que os valores para eles não eram tão altos quanto eu esperava. Eu sei que essas estatísticas de índice são redefinidas a cada reinicialização do Serviço do SQL Server, mas, neste caso, estava trabalhando em um Banco de Dados SQL do Azure. o que me fez pensar exatamente como isso funcionava. Com uma máquina virtual do Azure ou uma instância do SQL Server local, isso é fácil de descobrir. Mas, com um Banco de Dados SQL do Azure, não temos controle sobre quando as reinicializações são feitas, e quanto à oferta sem servidor (que pausa os bancos de dados não utilizados para reduzir custos), como eles se comportam? Antes de remover qualquer índice de um banco de dados, quero ter certeza de que estou examinando os melhores dados possíveis para tomar essa decisão. Então, eu fiz algumas escavações.

O que descobri é que no Banco de Dados SQL do Azure, as estatísticas de índice são reinicializadas quando a instância que hospeda seu banco de dados ou pool elástico é reiniciada. Como isso ocorre fora das mãos do administrador do banco de dados, é importante que você execute uma consulta como a abaixo para ver a hora de início da instância antes de tomar qualquer decisão sobre descartar os índices ou não.

Sem servidor

Como sabemos, um banco de dados sem servidor em pausa não tem uma instância em execução do mecanismo de banco de dados (são apenas arquivos de banco de dados no armazenamento), portanto, as estatísticas de índice também são reinicializadas sempre que um banco de dados sem servidor é reiniciado. Isso representa um grande problema porque tenho um servidor que pausa regularmente. Não há como usar essas estatísticas de índice para determinar muito de qualquer coisa em relação à limpeza e manutenção do índice. Portanto, estou escrevendo este blog para ter certeza de que outras pessoas também estão cientes disso.

Usar a opção sem servidor para seu Banco de Dados SQL do Azure é uma ótima maneira de economizar recursos, mas é muito importante que você conheça todas as desvantagens que isso possa ter. Nesse ínterim, eu sugeriria tentar persistir esses dados usando DMVs e escrevê-los em uma tabela. Ainda não fiz isso e não tenho certeza se funcionará bem, mas vale a pena tentar.

Descartando índices não utilizados em um banco de dados SQL do Azure - Uma imagem do SQLEspresso 2

Sobre Monica Rathbun

Consultor da Denny Cherry & Associates Consulting que mora na Virgínia. Ela é Microsoft Certified Solutions Expert, Microsoft MVP para Data Platform e VMWare vExpert. Ela tem mais de 15 anos de experiência trabalhando com uma ampla variedade de plataformas de banco de dados com foco em SQL Server. Ela é palestrante frequente em conferências do setor de TI sobre tópicos como ajuste de desempenho e gerenciamento de configuração. Ela é líder do grupo de usuários do SQL Server em Hampton Roads e mentora regional do Mid-Atlantic PASS. Ela é apaixonada pelo SQL Server e pela comunidade do SQL Server, fazendo tudo o que pode para retribuir. Monica sempre pode ser encontrada no Twitter (@sqlespresso) dando dicas úteis.

Leia Também  Como identificar e resolver a fragmentação de índice do SQL Server