Assistente de Distribuição no SQL do Azure Synapse

Aplica-se a: pools de SQL dedicados do Azure Synapse Analytics (antes conhecido como SQL DW)

No SQL do Azure Synapse, cada tabela é distribuída usando a estratégia escolhida pelo cliente (Round Robin, Hash Distribuído, Replicado). A estratégia de distribuição escolhida pode afetar substancialmente o desempenho da consulta.

O recurso de DA (Assistente de Distribuição) do SQL do Azure Synapse analisa consultas do cliente e recomenda as melhores estratégias de distribuição para tabelas para aprimorar o desempenho da consulta. As consultas a serem consideradas pelo assistente podem ser fornecidas pelo cliente ou extraídas de consultas históricas disponíveis no DMV.

Observação

Atualmente, o Assistente de Distribuição está em versão prévia no Azure Synapse Analytics. As versões prévias do recurso destinam-se apenas a testes e não devem ser usadas em instâncias ou dados de produção. Como uma versão prévia do recurso, o Assistente de Distribuição está sujeito a alterações de comportamento ou funcionalidade. Além disso, mantenha uma cópia dos seus dados de teste se os dados forem importantes. O Assistente de Distribuição não dá suporte a tabelas distribuídas de várias colunas.

Pré-requisitos

  • Execute a instrução T-SQL SELECT @@version para garantir que o pool de SQL dedicado do Azure Synapse Analytics seja a versão 10.0.15669 ou superior. Se sua versão for mais baixa, uma nova versão deverá alcançar automaticamente seus pools de SQL dedicados provisionados durante o ciclo de manutenção.

  • Verifique se as estatísticas estão disponíveis e atualizadas antes de executar o assistente. Consulte os artigos Gerenciar estatísticas de tabela, CREATE STATISTICS e UPDATE STATISTICS para obter mais detalhes sobre estatísticas.

  • Habilitar o consultor de distribuição do Azure Synapse para a sessão atual com o comando SET RECOMMENDATIONS T-SQL.

Analisar a carga de trabalho e gerar recomendações de distribuição

O tutorial a seguir explica o caso de uso de exemplo para usar o recurso de Assistente de Distribuição para analisar consultas do cliente e recomendar as melhores estratégias de distribuição.

O Assistente de Distribuição analisa apenas consultas executadas em tabelas de usuário.

1. Criar procedimentos armazenados do Assistente de Distribuição

Para executar o assistente facilmente, crie dois procedimentos armazenados no banco de dados. Execute o script CreateDistributionAdvisor_PublicPreview disponível para download no GitHub:

Comando Descrição
dbo.write_dist_recommendation Define as consultas que o DA analisará. Você pode fornecer consultas manualmente ou pode ler até 100 consultas anteriores das cargas de trabalho reais em sys.dm_pdw_exec_requests.
dbo.read_dist_recommendation Executa o assistente e gera recomendações.

Aqui está um exemplo de como você pode executar o assistente.

2a. Executar o assistente em uma carga de trabalho anterior na DMV

Execute os seguintes comandos para ler até as últimas 100 consultas na carga de trabalho e executar a análise e obter recomendações de distribuição:

EXEC dbo.write_dist_recommendation <Number of Queries max 100>, NULL
go
EXEC dbo.read_dist_recommendation;
go

Para ver quais consultas foram analisadas pelo DA, execute o script e2e_queries_used_for_recommendations.sql disponível para download no GitHub.

2b. Executar o assistente em consultas selecionadas

O primeiro parâmetro em dbo.write_dist_recommendation deve ser definido como 0, e o segundo parâmetro é uma lista separada por ponto e vírgula de até 100 consultas que o DA analisará. No exemplo abaixo, queremos ver a recomendação de distribuição para duas instruções separadas por ponto e vírgula, select count (*) from t1; e select * from t1 join t2 on t1.a1 = t2.a1;.

EXEC dbo.write_dist_recommendation 0, 'select count (*) from t1; select * from t1 join t2 on t1.a1 = t2.a1;'
go
EXEC dbo.read_dist_recommendation;
go

3. Exibir recomendações

O procedimento armazenado do sistema dbo.read_dist_recommendation retornará recomendações no seguinte formato quando a execução for concluída:

Nome da coluna Descrição
Table_name A tabela que o DA analisou. Uma linha por tabela, independentemente da alteração na recomendação.
Current_Distribution Estratégia de distribuição de tabela atual.
Recommended_Distribution Distribuição recomendada. Poderá ser o mesmo que Current_Distribution se não houver nenhuma alteração recomendada.
Distribution_Change_Command Um comando T-SQL CTAS para implementar a recomendação.

4. Implementar a orientação

  • Execute o comando CTAS fornecido pelo Assistente de Distribuição para criar tabelas com a estratégia de distribuição recomendada.
  • Modifique as consultas a serem executadas em novas tabelas.
  • Execute consultas em tabelas antigas e novas para comparar com aprimoramentos de desempenho.

Observação

Para nos ajudar a aprimorar o Assistente de Distribuição, preencha esta pesquisa rápida.

Solução de problemas

Esta seção contém cenários comuns de solução de problemas e erros comuns que você pode encontrar.

1. Estado obsoleto de uma execução anterior do assistente

1a. Sintoma:

você vê esta mensagem de erro ao executar o assistente:

Msg 110813, Level 16, State 1, Line 1
Calling GetLastScalarResult() before executing scalar subquery.
1b. Mitigação:
  • verifique se você está usando aspas simples '' para executar o assistente nas consultas selecionadas.
  • Inicie uma nova sessão no SSMS e execute o assistente.

2. Erros durante a execução do assistente

2a. Sintoma:

o painel de 'resultado' mostra CommandToInvokeAdvisorString abaixo, mas não mostra o RecommendationOutput abaixo.

Por exemplo, você vê apenas o conjunto de resultados Command_to_Invoke_Distribution_Advisor.

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor.

Mas não o segundo conjunto de resultados que contém os comandos de T-SQL de alteração de tabela:

Screenshot of the output of a T-SQL result showing the Command_to_Invoke_Distribution_Advisor with a second resultset containing table change T-SQL commands.

2b. Mitigação:
  • Verifique a saída de CommandToInvokeAdvisorString acima.

  • Remova as consultas que podem não ser mais válidas que possam ter sido adicionadas aqui entre as consultas selecionadas à mão ou pela DMV editando a cláusula WHERE em: Consultas consideradas pelo DA.

3. Erro durante o pós-processamento da saída da recomendação

3a. Sintoma:

você vê a mensagem de erro a seguir.

Invalid length parameter passed to the LEFT or SUBSTRING function.
3b. Mitigação:

verifique se você tem a versão mais atualizada do procedimento armazenado do GitHub:

Comentários sobre o grupo de produtos do Azure Synapse

Para nos ajudar a aprimorar o Assistente de Distribuição, preencha esta pesquisa rápida.

Se você está buscando informações que não encontrou neste artigo, pesquise a Página de perguntas Microsoft Q&A sobre o Azure Synapse, onde você poderá publicar perguntas para outros usuários e para o Grupo de Produtos do Azure Synapse Analytics.

Monitoramos ativamente esse fórum para garantir que suas perguntas sejam respondidas por outro usuário ou um de nós. Caso você prefira fazer perguntas sobre o Stack Overflow, também temos um Fórum sobre o Stack Overflow do Azure Synapse Analytics.

Para solicitações de recursos, use a página Comentários sobre o Azure Synapse Analytics. Seus comentários e votos a favor de outras solicitações nos ajudam a saber quais são os recursos que têm mais demanda.

Próximas etapas