Cuidado ao descartar índices não utilizados em um banco de dados SQL do Azure

Cuidado ao descartar índices não utilizados em um banco de dados SQL do Azure

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 tempo 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.

SELECT d.name,

       OBJECT_NAME(i.[object_id]) AS [ObjectName],

       i.[name] AS [IndexName],

       s.user_seeks,

       s.user_scans

FROM sys.indexes AS i

    LEFT OUTER JOIN sys.dm_db_index_usage_stats AS s

        ON i.[object_id] = s.[object_id]

           AND i.index_id = s.index_id

           AND s.database_id = DB_ID()

    JOIN sys.databases d

        ON d.database_id = s.database_id

WHERE OBJECTPROPERTY(i.[object_id], 'IsUserTable') = 1

ORDER BY s.user_seeks + s.user_scans + s.user_lookups DESC

OPTION (RECOMPILE);

Banco de dados SQL do Azure

Se o índice não mostrou 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, eu 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.

Leia Também  Monitore e faça failover em um grupo de disponibilidade Always On do SQL Server distribuído

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 fazer qualquer determinação sobre descartar os índices ou não.

SELECT sqlserver_start_time

FROM sys.dm_os_sys_info;

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 Serverless 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.

Cuidado ao descartar índices não utilizados em um banco de dados SQL do Azure 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 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  Removendo o rastreio padrão - Parte 2

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