Database
 sql >> Base de Dados >  >> RDS >> Database

Resenha do livro:Benjamin Nevarez:Query Tuning &Optimization




Minha cópia do Microsoft SQL Server 2014 Query Tuning &Optimization (também disponível no Kindle), de Benjamin Nevarez, chegou na semana passada. Eu não consegui chegar a ele imediatamente, mas no fim de semana eu finalmente consegui cruzar por ele entre as trocas de fraldas e uma ida ao zoológico.

TL;DR:Vale o dinheiro


Benjamin apresenta uma explicação completa de todo o processo de otimização de consulta e muito do histórico que você precisará para entender tudo. Ele trata de índices, estatísticas e cache de planos, além de como lidar com problemas comuns, como sniffing de parâmetros. Ele explica opções populares, como Otimizar para cargas de trabalho ad hoc e parametrização forçada, e como elas alteram a maneira como os planos são armazenados em cache e reutilizados. Ele também discute muitos recursos não documentados e sinalizadores de rastreamento que podem ajudá-lo a entender melhor (ou coagir) a abordagem do SQL Server para sua consulta e como usar os comandos Trace, Extended Events e DBCC para revisar as decisões que o otimizador tomou e o impacto que elas tiveram. Tive.

Há também uma boa parte do conteúdo dedicado a muitos novos recursos do SQL Server 2014, incluindo OLTP na memória ("Hekaton"), índices columnstore clusterizados, estatísticas incrementais e o novo estimador de cardinalidade. Enquanto o livro estava sendo escrito, os bancos de dados de exemplo AdventureWorks para SQL Server 2014 ainda não foram publicados, mas estão disponíveis agora.

O livro termina com um capítulo complexo, mas informativo, sobre as limitações do otimizador de consulta que levam a planos abaixo do ideal e como usar dicas e guias de plano para contorná-los.

Algumas limitações


Embora seja uma referência geral bastante completa ao ajuste de consulta, havia algumas coisas que eu achava que poderiam ter sido melhores:
  • Benjamin fala sobre a coleta de informações do ShowPlan de Trace e Extended Events e aponta corretamente que o Profiler não é a maneira que você deseja executar traces, devido à sobrecarga de desempenho horrenda e bem documentada. Isso é uma coisa boa, já que o trace está obsoleto e o Profiler é o que as pessoas geralmente usam por padrão. Há um pequeno aviso sobre a sobrecarga do query_post_execution_showplan evento, que acho que poderia ter recebido um pouco mais de ênfase, com lembretes de que isso deve ser usado apenas para ajustes e solução de problemas muito direcionados. Coletar isso para cada consulta em sua carga de trabalho provavelmente causará mais danos do que benefícios.
  • Ele discute índices e estatísticas filtrados, mas ignora o fato de que eles são problemáticos quando se trata de atualizações automáticas, já que não há algoritmo especial usado, embora o índice represente apenas um subconjunto da tabela. A Microsoft confirmou que isso é um problema, mas, neste momento, eles não têm planos para corrigi-lo. Para obter mais informações, consulte Conectar nº 509638 e Conectar nº 333532. Veja também esta postagem do blog para muitas outras limitações de índice filtrado a serem consideradas.
  • Embora a cobertura dos recursos de 2014 tenha sido bastante abrangente, fiquei surpreso ao não encontrar nenhuma menção a sys.dm_exec_query_profiles , um novo DMV para acompanhar o progresso da consulta em tempo real – até o operador individual. No entanto, não é uma informação essencial para todos, pois não é um caso de uso extremamente amplo (IMHO só é realmente útil para consultas particularmente longas).
  • Esta é uma escolha total, mas é comum entre os títulos técnicos:o índice é um pouco impreciso. Por exemplo, a referência ao SQL Sentry Plan Explorer aponta para a página 13, mas o conteúdo relevante está, na verdade, na página 14. Como eu disse, detalhes muito pequenos, ele se destacou para mim porque foi a primeira coisa que olhei subir no índice. :-)

Eu não consideraria essas reclamações, por si só. Nenhum livro pode conter todos os detalhes sobre tudo. Então, por favor, considere-os adendos. :-)

Resumo


Isso rapidamente se tornou uma referência conveniente para mim; as orelhas de cachorro já estão substituindo vários dos meus favoritos por postagens de blog que mencionam algum detalhe obscuro ou sinalizador de rastreamento e, em muitos casos, Benjamin o descreveu com mais detalhes e/ou o enquadrou com melhor contexto. Entre este livro e alguns títulos mencionados abaixo, acho que qualquer pessoa familiarizada com T-SQL pode se atualizar rapidamente, mesmo tendo zero conhecimento do otimizador antes de mergulhar.

Materiais complementares


Outros livros que eu recomendaria para complementar este título:
  • Grant Fritchey's SQL Server Query Performance Tuning
  • Indexação de desempenho especializada do Jason Strate para SQL Server 2012
  • Planos de execução do SQL Server da Grant Fritchey

E, claro, há um suprimento infinito de postagens de blog e outros artigos para ajudar no seu entendimento de ajuste e otimização. Eu sou meio que parcial com o material de Paul White – eles são tão profundos quanto os mortais jamais gostariam de ir, mas você pode obter uma tonelada deles simplesmente passando os olhos também. Grant e Gail Shaw também têm conteúdo valioso sobre consultas e planos de execução, e Kimberly Tripp e Erin Stellato são ótimos recursos para qualquer coisa relacionada a índices ou estatísticas.
  • Paul White:SQLPerformance.com | sql.kiwi
  • Grant Fritchey (e recursos)
  • Gail Shaw
  • Kimberly Tripp
  • Erin Stellato

Você pode encontrar alguma sobreposição, mas acredito muito em consumir informações de várias fontes. Às vezes, eles estão apresentando a mesma informação, mas a lâmpada clica com base na maneira como uma pessoa disse ou no contexto que ela forneceu. Eu também provavelmente perdi cerca de 50 outras pessoas com ótimo material.

Ah, e eu mencionei que nossa ferramenta gratuita, o Plan Explorer, também pode ajudar com isso? Meu kit de demonstração atualizado mostra vários exemplos.