SQL Server: O ajuste de consulta eficaz

Concentre-se no ajuste de consultas para de fato otimizar o desempenho do seu SQL Server e gerenciar as cargas de trabalho com eficiência.

Extraído de "SQL Server DMV Starter Pack," publicado pela Red Gate livros (2010).

Glenn Berry, Louis Davidson e Tim Ford

Ajuste de consulta é o coração e a alma da otimização do desempenho de SQL Server. Se sua carga de trabalho típica consiste em consultas mal projetados ou ineficientes, você vai enfrentar problemas de desempenho e escalabilidade. Se as consultas são maiores, mais numerosos e mais complexo que o necessário, eles consumirão mais recursos de CPU durante a execução.

Conseqüentemente, eles também levará mais tempo para ser executado. Consultas mal projetados, juntamente com uma falha ao fazer uso adequado dos índices, levam a SQL Server, lendo dados mais do que o necessário. Isso causa uma latência óbvia em desempenho e tempo de execução.

Se SQL Server lê os dados do cache de buffer, ele é chamado de i/O lógico. Isso pode ser uma operação cara de um ponto de vista do desempenho. Se os dados não estiverem na memória e precisa ser lidos no disco (ou se é necessário que os dados serem gravados), este é físico e/S e é ainda mais caro.

Assuntos de tamanho

Se você tiver várias consultas que retornam enormes quantidades de dados, ele pode causar a pressão de memória em cache de buffer. Isso resultará em dados de liberação de SQL Server do cache, que por sua vez afetará o desempenho de outras consultas.

A "regra de ouro" de consultas SQL bem projetadas é retornar que há mais dados que você realmente precisam. Você vai querer SQL Server passar os dados como algumas vezes possível e usar a lógica baseada em conjunto para manipular esses dados no conjunto de resultados que você precisa.

Analisar e otimizar as declarações de SQL não não uma "operação de"alta simultaneidade". SQL Server armazena os planos de consultas executadas anteriormente em uma área de memória compartilhada, chamada de cache do plano. Sempre que você envia uma consulta para execução, o SQL Server verifica o cache do plano para ver se ele pode usar um plano existente para executar a consulta. Toda vez que ele não encontra uma correspondência, ele analisa, otimiza e gera um plano para a consulta enviada. Este é um processo intensivo de CPU.

Além disso, cada vez que ele faz isso, SQL Server adquire travas em cache do plano para proteger a área relevante da memória de outras atualizações. Consultas de SQL Server mais ad-hoc, sem parâmetros significam mais planos de uso único no cache. Isso resulta em maior consumo de recursos da CPU e travas aquisição durante a análise. Ele pode resultar em um sistema não dimensionável. Consultas SQL bem projetadas promoverá a reutilização do plano ("analisar uma vez, usar muitas vezes") para o máximo possível.

Design com o tempo em mente

Por fim, se sua carga de trabalho consiste em consultas mal projetadas, ele fará com que operações de e/S desnecessárias. A sobrecarga de CPU e memória será sobrecarrega e tempos de execução será lentos. A situação obterá piorando à medida que aumenta o número de usuários. Suas solicitações serão forçadas a esperar pelo acesso aos recursos compartilhados que as consultas inadequadamente projetadas estão monopolizando.

Por outro lado, se você pode minimizar o número de instruções SQL individuais, que você precisa para realizar um trabalho específico, em seguida, você também pode minimizar o trabalho feito por cada uma dessas instruções individuais do SQL. Você está muito mais provável que um sistema de SQL Server rápido e eficiente, que serão dimensionados normalmente como o número de usuários e a carga de trabalho geral que cresce.

Uma abordagem usados com freqüência para ajuste de desempenho é recuperar uma lista "Top 10" consultas mais lento que constituem parte da carga de trabalho normal e diária em sua instância de SQL Server e ajustar a eles, um por um. Rastrear as sessões, solicitações e consultas em sua infra-estrutura de SQL Server que são os mais intensivo de recursos e levar o tempo mais longo para ser executado.

Uma abordagem um pouco mais científica poderá começar a níveis mais baixos, procurando por áreas específicas onde o SQL Server está passando por pressão dos recursos. Verificação para determinar onde os processos estão aguardando o tempo excepcionalmente longo para alguma outra ação seja concluída antes de prosseguir. Dessa forma, você pode descobrir se o componente principal do tempo de execução lento é o tempo de CPU (se o sistema está vinculado à CPU) ou tempo gasto esperando para i/O (se o sistema estiver vinculada a e/S) e assim por diante.

Você pode trabalhar novamente a partir daí para as solicitações que estão causando a contenção de recursos. Necessidade de isolar as consultas do problema, em seguida, você pode encontrar uma forma de reduzir a quantidade de trabalho que está sendo executada. Isso geralmente envolve o ajuste suas consultas e instruções de SQL ou a adição de índices. Se tudo mais falhar, você pode aumentar a capacidade comprando mais energia de disco/memória/CPU.

Glenn Berry

Louis Davidson

Tim Ford

Glenn Berrytrabalha como arquiteto de banco de dados em tecnologias de NewsGator em Denver, Colo. Ele é um MVP de SQL Server e uma coleção inteira de certificações da Microsoft, incluindo MCITP, MCDBA, MCSE, MCSD, MCAD e MCTS, o que prova que ele gosta de fazer testes.

**Luis Davidson**já no setor de TI há 16 anos como arquiteto e desenvolvedor de banco de dados corporativo. Ele tem sido um MVP de SQL Server há seis anos e escreveu quatro livros sobre o design de banco de dados. Atualmente, ele é arquiteto de dados e às vezes DBA para a rede de transmissão Christian, escritórios de suporte em Nashville, Ohio e de Virginia Beach, Virginia.

**Timothy Ford**é um MVP de SQL Server e tem trabalhado com SQL Server para mais de 10 anos. Ele é o principal DBA e especialista no assunto para a plataforma SQL Server para a integridade do espectro. Ele foi escrita sobre tecnologia desde 2007 para uma variedade de sites da Web e mantém seu próprio blog em thesqlagentman.com, abrangendo SQL como os tópicos de desenvolvimento bem como telecommuting e profissional.

Saiba mais sobre "SQL Server DMV Starter Pack" em red-gate.com/our-company/about/book-store.

Conteúdo relacionado