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
.
Mas não o segundo conjunto de resultados que contém os comandos de T-SQL de alteração de tabela:
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:
script e2e_queries_used_for_recommendations.sql disponível para download no GitHub
script CreateDistributionAdvisor_PublicPreview.sql disponível para download no 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
- SET RECOMMENDATIONS (Transact-SQL)
- Carregar dados no pool de SQL dedicado
- Estratégias de carregamento de dados para pool de SQL dedicado no Azure Synapse Analytics.
- Arquitetura do pool de SQL dedicado (antigo SQL DW) no Azure Synapse Analytics
- Roteiro para o pool de SQL dedicado (antigo SQL DW) no Azure Synapse Analytics