Na sexta-feira passada, dei um webinar sobre o Plan Explorer 3.0, os novos recursos e por que decidimos eliminar a edição PRO e oferecer todos os recursos gratuitamente . Se você perdeu, pode assistir ao webinar aqui:
- Planejar o webinar Explorer 3.0
Houve muitas ótimas perguntas enviadas, e vou tentar abordá-las aqui. Também fizemos algumas de nossas próprias perguntas em diferentes momentos da apresentação, e os usuários pediram detalhes sobre elas, então começarei com as perguntas da pesquisa. Tivemos um pico de 502 participantes, e vou indicar nos gráficos abaixo quantas pessoas responderam a cada pergunta. Como a primeira pergunta foi feita antes do início técnico do webinar, um número menor de pessoas respondeu a essa.
Perguntas do público
P:Os exemplos de código estão disponíveis?
R: Sim, os três arquivos de sessão que usei para minhas demonstrações estão disponíveis aqui:
- Demos de webinar do Plan Explorer 3.0
Você pode abri-los na versão mais recente do Plan Explorer, mas se quiser executar qualquer uma das consultas novamente localmente, precisará do AdventureWorks2014 (com o script de ampliação de Jonathan Kehayias) e/ou do novo banco de dados de amostra Wide World Importers.
P:Então, tudo o que é mostrado hoje está no novo Plan Explorer, unificado e gratuito? Em caso afirmativo, qual é o novo modelo de receita da sua empresa?
R: Sempre me surpreendo quando encontro pessoas que pensam que tudo o que oferecemos é o Plan Explorer (eu os vejo pessoalmente e também houve vários comentários semelhantes na postagem do blog de Greg). Nosso verdadeiro pão com manteiga está em nossa plataforma de monitoramento e esperamos que sua experiência positiva com o Plan Explorer o leve a experimentar nossas outras soluções também.
P:Ainda estamos usando o SQL Server 2008. Há benefícios em usar PE versus SSMS?
R: Sim, embora você perca algumas das funcionalidades (como o Live Query Profile), há muito mais informações disponíveis para você em comparação com o SSMS, e nos esforçamos para tornar problemas específicos muito mais detectáveis.
P:O perfil de consulta ao vivo funcionará para o SQL Server 2014?
R: Sim, desde que o Service Pack 1 seja aplicado, pois o recurso depende de um DMV que foi adicionado no SQL Server 2014 SP1.
P:Quais são as limitações em relação ao SQL Server 2012? Posso usar esta ferramenta?
R: Absolutamente. A limitação que mencionei durante o webinar sobre o SQL Server 2012 e inferior é que eles não conseguem capturar dados do Live Query Profile.
P:Os dados são coletados apenas para SQL Server 2014 e superior? E se o SQL Server 2014 estiver instalado, mas a compatibilidade estiver definida como 2012?
R: Sim, o perfil de consulta ao vivo (e os gráficos de recursos) funciona no SQL Server 2014 (com pelo menos SP1), SQL Server 2016 e Banco de Dados SQL do Azure. Não é afetado pelo nível de compatibilidade.
P:Qual versão do SQL Server é necessária para recuperar as informações de estatísticas de espera?
R: A coleta de estatísticas de espera depende de uma sessão de eventos estendidos, portanto, você precisa estar executando no SQL Server 2008 ou superior e executar no contexto de um usuário ou login com permissões suficientes para criar e descartar uma sessão de eventos estendidos (
CONTROL SERVER
no SQL Server 2008 e 2008 R2 e ALTER ANY EVENT SESSION
no SQL Server 2012 e superior). P:Como faço para exibir gráficos de análise de índice ou de perfil de consulta ao vivo?
R: Havia muitas variações nessas duas perguntas e, pelo que parece, as pessoas estavam brincando ativamente com a nova versão durante o webinar e não vendo os dados da Análise de Índice nem os dados do Perfil de Consulta ao Vivo. Se você tiver um plano existente capturado do SSMS ou uma versão anterior do Plan Explorer, não haverá nenhuma informação a ser exibida.
Para coletar Análise de Índice dados, você deve gerar um plano estimado ou real de dentro do Plan Explorer. Para ver uma grade de colunas e índices, você deve escolher uma operação selecionada:no menu suspenso na parte superior da guia Análise de índice.
Para coletar Perfil de consulta ao vivo dados, você deve gerar um plano real de dentro do Plan Explorer e ser executado no 2014 SP1 ou superior. Você também precisa garantir que selecionou a opção "Com perfil de consulta ao vivo" (veja a imagem à direita) e aguarde a execução da consulta terminar antes que os gráficos sejam renderizados. Em uma versão futura, os gráficos serão renderizados em tempo real, mas nesta versão fazemos isso depois que todos os dados forem coletados.
P:O Live Query Profile funciona em bancos de dados clonados no SQL Server 2014 SP2?
R: Sim, isso funcionará, mas não fornecerá muitas informações, pois um banco de dados clonado está vazio - você verá as estimativas corretas no plano, mas os valores reais serão todos 0 e, portanto, as métricas de tempo de execução não representarão nada realista ou gargalos significativos. A menos que você esteja preenchendo o clone com dados alternativos, como Erin Stellato promove em um post anterior. Observe também que, se você quiser que os planos de consulta reflitam os tamanhos reais dos dados de produção, certifique-se de que todas as formas de estatísticas automáticas estejam desativadas, caso contrário, elas serão atualizadas à medida que você executar as consultas e todas as estimativas serão 0.
P:A nova versão do Plan Explorer funciona com o SQL Server 2016?
R: Sim. Oferecemos suporte a todos os novos operadores de plano do SQL Server 2016 e outras alterações do plano de exibição (consulte minha postagem, "Suporte do Gerenciador de planos para SQL Server 2016"), e o suplemento também funciona com a versão mais recente do SSMS (consulte minha postagem, "Anunciando o suporte ao suplemento do Plan Explorer para SSMS 2016").
P:Portanto, mesmo um plano de execução real no SSMS é rotulado com estimado custos?
R: Sim está certo. Quando você captura dados do Live Query Profile, podemos alterar as porcentagens de custo para todos os operadores, porque sabemos com um grau significativo de precisão quanto trabalho real cada operação executou (no entanto, a consulta precisa ser executada por mais de um limite). Isso pode ser especialmente útil se você estiver solucionando um problema de E/S, porque as estimativas parecem nunca levar em consideração os gargalos de E/S. O gráfico a seguir percorre as estimativas originais (sempre podemos mostrar o que o SSMS teria dito), os valores reais após o recusteio e os valores reais após o recusteio e a alteração dos custos para "por E/S" e as larguras de linha para "por tamanho de dados":
P:Eu costumava abrir meu plano produzido pelo SSMS no Plan Explorer, mas pelo que Aaron acabou de mostrar, entendi corretamente que devo executar minhas consultas (durante o ajuste) do Plan Explorer?
R: Eu abordei essa questão no webinar, mas para deixar claro, acho que existem duas etapas na evolução de uma consulta:(1) garantir resultados corretos e (2) otimização de desempenho. Acredito firmemente que atualmente você deve usar o SSMS para (1) e o Plan Explorer para (2). Há muito promovo que, uma vez que as pessoas tenham certeza de que obtiveram resultados corretos, elas devem ajustar gerando real planos de execução de dentro do Plan Explorer, porque coletamos muito mais informações de tempo de execução para você. Essas informações de tempo de execução são particularmente úteis se você compartilhar seus planos em nosso site de perguntas e respostas, pois torna todas as métricas e possíveis gargalos muito mais aparentes.
P:Quais são as porcentagens abaixo do operador... por exemplo, 2.885% abaixo da função?
R: Essa porcentagem não é um custo, mas sim a % de linhas que foram realmente processadas em comparação com a estimativa. Nesse caso, o SQL Server estimou que a função retornaria 10.000 linhas, mas em tempo de execução ela retornou perto de 300.000! Você pode ver uma dica de ferramenta se você passar o mouse apenas sobre esse número %, e você pode ver as diferenças de estimativa de contagem de linhas na dica de ferramenta para o operador ou em outras grades como Operações Principais (a função retorna um número diferente de linhas agora do que antes durante a demonstração):
P:Você pode minimizar ou ocultar a parte de repetição para ter mais espaço para o plano em si?
R: Sim, todos os nossos painéis são ajustáveis; muitos têm um pino que alterna entre estático e ocultar automaticamente, a maioria dos painéis pode ser arrastada (assim como no Visual Studio, SSMS, etc.), e o painel de repetição em particular tem uma pequena seta no centro superior que permite que você para mostrar/ocultar rapidamente:
P:Você consegue ver o bloco de código incorreto diretamente do plano?
R: Não tenho certeza se estou interpretando a pergunta corretamente, mas todos os nossos painéis são sensíveis ao contexto, e a declaração para o plano que está sendo examinado é mostrada na grade Declaração e no painel Dados de texto:
Se o texto da instrução não estiver totalmente visível devido ao tamanho, você sempre poderá clicar com o botão direito do mouse nessa célula e escolher Copiar instrução para copiar texto de comando e, em seguida, alternar para essa guia. Ou, se você não quiser substituir o conteúdo atual da guia Texto do Comando, escolha Copiar> Célula e cole em uma nova sessão, SSMS ou outro editor.
P:Como posso interromper um "Obter plano real" se iniciei uma consulta de 1 hora por engano?
R: Se uma consulta estiver em execução, há um botão Parar na barra de status, no canto inferior esquerdo:
P:Não seria melhor usar DROP_EXISTING =ON em vez de descartar um índice primeiro e criar um novo?
R: Definitivamente, temos planos para tornar o script de índice mais robusto no futuro, incluindo opções como DROP_EXISTING e ONLINE.
P:Isso está relacionado ao SentryOne?
R: Todas as funcionalidades do Plan Explorer também estão disponíveis no SentryOne Client. Você não precisa tecnicamente instalar o Plan Explorer se tiver o cliente, exceto que as atualizações são enviadas em um agendamento diferente, portanto, em muitos casos, pode fazer sentido ter ambos instalados.
Lembre-se de que os planos que coletamos para você durante as atividades de monitoramento são planos estimados, devido ao alto custo de coleta de planos reais para todas as consultas executadas em um servidor. Isso significa que, se você detalhar um plano coletado no cliente, ele não terá informações adicionais, como dados de análise de índice e perfil de consulta ao vivo. Você sempre pode executar a consulta novamente, interativamente, para obter esses dados de tempo de execução adicionais.
P:Qual é a sobrecarga de desempenho desses novos recursos?
R: A maioria das informações que coletamos não é mais cara do que se você executasse as mesmas consultas e coletasse os mesmos dados de tempo de execução do Management Studio (por exemplo, com SHOWPLAN, STATISTICS TIME e STATISTICS IO ativados). Muito disso é compensado, no entanto, por nosso comportamento padrão de descartar resultados, de modo que não sobrecarregamos o servidor com o esforço de transmitir resultados para nosso aplicativo.
Para planos extremamente complexos executados em bancos de dados com esquemas muito complexos e MUITOS índices, a coleta de índices e estatísticas pode ser menos eficiente, mas é extremamente improvável que isso cause qualquer impacto perceptível nas cargas de trabalho existentes. Isso não será afetado pelo número de linhas em uma tabela, que foi mencionado em uma variação desta questão.
Para consultas realmente demoradas ou com uso intensivo de recursos, minha maior preocupação seria nossa coleção de perfis de consulta ao vivo. Temos duas preferências que podem ajudar nisso:se deve incluir o Live Query Profile com toda a geração do plano real por padrão e qual intervalo para coletar dados do DMV. Embora eu ainda sinta que a sobrecarga dessa coleção nunca deve chegar nem perto da sobrecarga da própria consulta, você pode ajustar essas configurações para tornar a coleção menos agressiva.
Dito isso, com a isenção de responsabilidade de que tudo deve ser feito com moderação, não observei nenhum problema relacionado à sobrecarga de coleta de dados e não hesitaria em usar a funcionalidade completa em uma instância de produção.
P:Existe algo para ajudar a criar índices filtrados?
R: Atualmente não temos nenhuma funcionalidade que recomende índices filtrados, mas está definitivamente no nosso radar.
P:Algum plano para adicionar um recurso de comparação de plano de consulta ao Plan Explorer?
R: Sim, isso certamente está em nosso roteiro desde muito antes de essa funcionalidade ser introduzida no SSMS. :-) Vamos aproveitar nosso tempo e construir um conjunto de recursos que você espera de nós.
P:Você poderia usar com pacotes SSIS para descobrir o desempenho de um pacote?
R: Suponho que você poderia, se invocar o pacote ou trabalho por meio de T-SQL em um servidor (o Plan Explorer não tem a capacidade de iniciar coisas como pacotes SSIS diretamente). Mas o aplicativo mostrará apenas os aspectos de desempenho que são visíveis por meio do SQL Server - se houver ineficiências no pacote SSIS que não estejam relacionadas à execução no SQL Server (digamos, um loop infinito em uma tarefa de script), estamos não poderemos pegá-los, porque não temos visibilidade e não estamos realizando nenhuma análise de código.
P:Você pode mostrar rapidamente como usar o recurso de análise de impasse?
R: Eu perdi essa pergunta durante o webinar, mas falo sobre essa funcionalidade no meu Demo Kit, Jonathan Kehayias escreveu sobre isso aqui, Steve Wright tem um vídeo sobre isso no YouTube, e a documentação oficial pode ser revisada no PE User Guide.
P:Isso pode ser usado como o Profiler? Posso analisar uma carga de trabalho inteira?
R: O Plan Explorer foi projetado para ajudar a analisar consultas individuais e seus planos de execução. Temos uma plataforma de monitoramento com todos os recursos para esforços de escopo maior e também existem várias ferramentas de análise de carga de trabalho de terceiros.
P:Sou muito novo no ajuste de consultas. Você poderia sugerir ferramentas e artigos para uma compreensão mais profunda?
R: Há muitos recursos para melhorar o ajuste de consultas:
- Qualquer livro sobre T-SQL de Itzik Ben-Gan, Grant Fritchey ou Benjamin Nevarez;
- Qualquer postagem de blog de Paul White ou Rob Farley;
- Perguntas e respostas aqui em answers.sqlperformance.com ou em dba.stackexchange.com;
- Vídeos de ajuste de consultas no YouTube;
- O Kit Demo (com uma nova versão em breve!); e,
- Prática . Seriamente. Você pode ler todos os livros e artigos que quiser, mas sem a solução de problemas prática e prática e a melhoria de consultas problemáticas com problemas reais de desempenho, será difícil se tornar um especialista. IMHO.
Resumo
Obrigado por participar do webinar e muito obrigado por todas as ótimas perguntas. Lamento não ter sido capaz de abordá-los todos, mas espero que tenha sido útil mesmo assim. Se você tiver uma pergunta que eu não abordei acima, sinta-se à vontade para me perguntar diretamente em [email protected].