Redshift da Amazon é um information warehouse em nuvem rápido, escalonável, seguro e totalmente gerenciado que permite analisar seus dados em escala. Amazon Redshift sem servidor permite acessar e analisar dados sem as configurações usuais de um information warehouse provisionado. Os recursos são provisionados automaticamente e a capacidade do information warehouse é dimensionada de forma inteligente para oferecer desempenho rápido até mesmo para as cargas de trabalho mais exigentes e imprevisíveis. Se preferir gerenciar os recursos do Amazon Redshift manualmente, você poderá criar clusters provisionados para suas necessidades de consulta de dados. Para obter mais informações, consulte Clusters do Amazon Redshift.
O Amazon Redshift fornece métricas e dados de desempenho para que você possa monitorar a integridade e o desempenho de clusters provisionados, grupos de trabalho sem servidor e bancos de dados. Os dados de desempenho que você pode usar no console do Amazon Redshift se enquadram em duas categorias:
- Métricas do Amazon CloudWatch – Ajuda a monitorar os aspectos físicos do seu cluster ou sem servidor, como utilização de recursos, latência e taxa de transferência.
- Consultar e carregar dados de desempenho – Ajuda a monitorar a atividade do banco de dados, inspecionar e diagnosticar problemas de desempenho de consulta.
Amazon Redshift introduziu um novo recurso chamado Consultar perfilador. O Question Profiler é uma ferramenta gráfica que ajuda os usuários a analisar os componentes e o desempenho de uma consulta. Esse recurso faz parte do console do Amazon Redshift e fornece uma representação visible e gráfica da ordem de execução da consulta, do plano de execução e de diversas estatísticas. O Question Profiler facilita aos usuários a compreensão e a solução de problemas de suas consultas.
Nesta postagem, abordamos dois casos de uso comuns para solucionar problemas de desempenho de consultas. Mostramos passo a passo como analisar e solucionar problemas de consultas de longa duração usando o Question Profiler.
Visão geral
Para o Amazon Redshift Serverless, o Question profiler pode ser acessado acessando o console Serverless. Escolher Consulta e monitoramento de banco de dadosselecione uma consulta e navegue até o Plano de consulta guia. Se um plano de consulta estiver disponível, você observará uma lista de consultas filhas. Escolha uma consulta para visualizá-la no Question Profiler.
Para o Amazon Redshift provisionado, o Question Profiler pode ser acessado acessando o painel de clusters provisionados. Escolher Consulta e cargase escolha uma consulta. Navegue até o Plano de consulta guia. Se um plano de consulta estiver disponível, você observará uma lista de consultas filhas. Escolha uma consulta para visualizá-la no Question Profiler.
Pré-requisitos
- Você pode usar o seguinte exemplo Gerenciamento de identidade e acesso da AWS (IAM) para configurar seu usuário ou função IAM com privilégios mínimos para acessar o Question Profiler no console da AWS. Se o usuário ou a função do IAM já tiver acesso ao Consulta e cargas seção do painel do cluster provisionado do Redshift ou Consulta e monitoramento de banco de dados seção do painel sem servidor do Redshift, nenhuma permissão adicional será necessária:
- Você pode optar por usar o Question Profiler em sua conta com um information warehouse e consultas existentes do Amazon Redshift. No entanto, se você quiser implementar esta demonstração em seu information warehouse existente do Amazon Redshift, baixe o pocket book Redshift question editor v2, Demonstração do criador de perfil de consulta Redshifte consulte o Carregamento de dados seção posteriormente nesta postagem.
- Você deve se conectar ao cluster usando credenciais de banco de dados e conceder o
sys:operator
ousys:monitor
função para o usuário do banco de dados para visualizar consultas executadas pelos usuários.
Carregamento de dados
Editor de consultas do Amazon Redshift v2 vem com dados de amostra que pode ser carregado em um banco de dados de amostra e no esquema correspondente. Para testar o Question Profiler em relação aos dados de amostra, carregue os dados de amostra tpcds e execute consultas.
- Para carregar o tpcds dados de amostra, inicie o editor de consultas Redshift v2 e expanda o banco de dados
sample_data_dev.
- Escolha o ícone associado ao
tpcds.
- O editor de consultas v2 carrega os dados em um esquema tpcds no banco de dados amostra_dados_dev.
A captura de tela a seguir mostra essas etapas.
- Verifique os dados executando o seguinte exemplo de consulta, conforme mostrado na captura de tela a seguir.
Casos de uso
Nesta postagem, descrevemos dois casos de uso comuns relacionados ao desempenho de consultas e como usar o Question Profiler para solucionar problemas de desempenho:
- Junções de loop aninhadas – Este tipo de junção é o mais lento dos tipos de junção possíveis. As junções de loop aninhadas são junções cruzadas sem uma condição de junção que resultam no produto cartesiano de duas tabelas.
- Distribuição de dados abaixo do excellent – Se a distribuição de dados estiver abaixo do excellent, você poderá notar uma grande transmissão ou redistribuição de dados entre nós de computação quando duas tabelas grandes forem unidas.
Caso de uso 1: junções de loop aninhadas
Para solucionar problemas de desempenho com junções de loop aninhado usando o Question Profiler, siga estas etapas:
- Importar bloco de notas baixado anteriormente em pré-requisitos seção do weblog no editor de consultas Redshift v2.
- Defina o contexto do banco de dados para
sample_data_dev
no Question Editor v2, conforme mostrado na captura de tela a seguir. - Correr
cell #3
do pocket book de demonstração para diagnosticar um problema de desempenho de consulta relacionado a junções de loop aninhadas.
- Correr
cell #5
para capturar o ID da consulta do SYS_QUERY_HISTORY filtragem de visualização do sistema com base no rótulo de consulta definido na etapa anterior. - No console do Amazon Redshift, no painel de navegação, selecione Consulta e cargas e escolha o nome do cluster onde a consulta foi executada originalmente, conforme mostrado na captura de tela a seguir.
- Isso abrirá o novo Question Profiler. Sob o Histórico de consultas seção, escolha
Connect with database
.Após a conexão bem-sucedida ao banco de dados, você observará o standing exibido comoLinked
e exibindo o histórico de consultas, conforme mostrado na captura de tela a seguir. - Você pode encontrar suas dúvidas por ID da consulta ou ID do processo. Insira o ID de consulta capturado na etapa anterior para filtrar a consulta de longa duração para análise posterior e escolha o ID de consulta correspondente, conforme mostrado na captura de tela a seguir.
- Sob o Plano de consulta seção, escolha
Little one question 1
conforme mostrado na captura de tela a seguir. Se houver várias consultas filhas, você terá que inspecionar cada uma delas em busca de problemas de desempenho.Isso abrirá o plano de consulta em uma visualização em árvore junto com métricas adicionais no painel lateral. Isso permite analisar rapidamente os fluxos, segmentos e etapas da consulta. Para obter mais informações sobre fluxos, segmentos e etapas, consulte Fluxo de trabalho de planejamento e execução de consultas no Guia do desenvolvedor de banco de dados do Amazon Redshift.
- Ligar Ver transmissões e, no Fluxos painel lateral, investigue e identifique qual fluxo tem o maior tempo de execução. Nesse caso, ID de fluxo 5 é onde a consulta passa a maior parte do tempo, conforme mostrado na captura de tela a seguir
- No Fluxos painel lateral, sob EU IAselecione 5 focar na Corrente 5 para análise mais aprofundada. O fluxo 5 mostra uma etapa de Nestloopconforme mostrado na captura de tela a seguir.
- Escolha o Nestloop passo para analisar melhor. O painel lateral mudará com detalhes da etapa e métricas adicionais sobre a junção de loop aninhado.
- Ao olhar para Detalhes da etapa – nestlooppodemos inspecionar o Linhas de entrada e evaluate isso com o Linhas de saídaconforme mostrado na captura de tela a seguir. Neste caso, devido à união cruzada com o
Store_returns
tabela, 287.514 linhas de entrada explodem para 950.233.770 linhas, fazendo com que nossa consulta seja executada mais lentamente. - Corrija a consulta introduzindo uma condição de junção entre o
store_sales
estore_returns
. Corrercell #7
do caderno de demonstração do Question editor v2. A consulta reescrita é executada em apenas 307 milissegundos.
Caso de uso 2: distribuição de dados abaixo do excellent
- Para demonstrar uma distribuição de dados abaixo do excellent, altere o estilo de distribuição das tabelas
web_sales
eweb_returns
para ATÉ correndocell #10
do bloco de notas de demonstração do editor de consultas v2.
- Correr
cell #12
. A consulta leva 409 milissegundos para ser executado, conforme mostrado pelo tempo decorrido na captura de tela a seguir do editor de consultas v2. - Seguir etapas 3–10 de caso de uso 1 para localizar o
query_id
e para abrir a visualização do Question Profiler para a consulta anterior. - Na página Consultar perfilador da consulta anterior, ative Ver transmissões. No Fluxos painel lateral, investigue e identifique qual fluxo tem o maior tempo de execução. Nesse caso, ID do fluxo 6 é onde a consulta passa a maior parte do tempo, conforme mostrado na captura de tela a seguir.
- Sob EU IAselecione 6 do Fluxos painel lateral para análise posterior.
O fluxo 6 mostra uma etapa de hash be part of, que envolve uma hash be part of de duas tabelas que são redistribuídas. Isto pode ser inferido a partir Hash Direita Junte-se a DS_DIST_BOTH sob Explicar as informações do nó do plano na captura de tela a seguir. Geralmente, essas redistribuições ocorrem porque as tabelas não estão unidas em suas chaves de distribuição ou não possuem o estilo de distribuição correto. No caso de tabelas grandes, estas redistribuições podem levar a uma degradação significativa do desempenho e, portanto, é importante identificar e corrigir tais passos para otimizar o desempenho da consulta.
- Corrija esse padrão de distribuição de dados abaixo do excellent escolhendo as chaves de distribuição apropriadas nas tabelas envolvidas:
web_sales
eweb_returns
. Para alterar os estilos de distribuição, executecell #14
do pocket book de demonstração para alterar os comandos da tabela. - Depois que os comandos anteriores terminarem de ser executados, execute
cell #16
para executar novamente a consulta selecionada. Conforme mostrado no Editor de Consultas na captura de tela a seguir, agora a mesma consulta finalizada em 244 milissegundos depois de atualizar o estilo de distribuição para chave para tabelasweb_sales
eweb_returns
. - Na visualização Consultar perfilador, ative Ver transmissões e observe que Fluxos 5 agora levou mais tempo. Levou 8 milissegundos para terminar, em comparação com 13 milissegundos na etapa anterior.
- No Fluxos painel lateral, sob EU IAselecione 5 para detalhar ainda mais e escolha o Hashjoin Como mostra a captura de tela a seguir, depois de alterar o estilo de distribuição para chave para ambos
web_sales
eweb_return
tabelas, nenhuma das tabelas precisa ser redistribuída no tempo de execução da consulta, resultando em desempenho otimizado.
Considerações
Considere os seguintes detalhes ao usar o Question Profiler:
- O Question Profiler exibe informações retornadas pelas visualizações SYS_QUERY_HISTORY, SYS_QUERY_EXPLAIN, SYS_QUERY_DETAIL e SYS_CHILD_QUERY_TEXT.
- O Question Profiler exibe apenas informações de consulta para consultas executadas recentemente no banco de dados. Se uma consulta for concluída usando um cache de conjunto de resultados pré-preenchido, o Question Profiler não terá informações sobre ela porque o Amazon Redshift não gera um plano de consulta para essas consultas.
- Consultas executadas pelo Question Profiler para retornar as informações da consulta executadas no mesmo information warehouse que as consultas definidas pelo usuário.
Limpar
Para evitar custos inesperados, execute a seguinte ação para excluir os recursos que você criou:
Solte todas as tabelas do sample_data_dev
sob tpcds
esquema.
Conclusão
Nesta postagem, discutimos como usar o Amazon Redshift Question Profiler para monitorar e solucionar problemas de consultas de longa execução. Demonstramos uma abordagem passo a passo para analisar o desempenho da consulta examinando o plano e as estatísticas de execução da consulta e identificando a causa raiz da lentidão da consulta. Experimente esse recurso em seu ambiente e compartilhar seu suggestions conosco.
Sobre os Autores
Raks Khare é arquiteto de soluções especialista em análise sênior na AWS, baseado na Pensilvânia. Ele ajuda clientes de diversos setores e regiões a arquitetar soluções de análise de dados em escala na plataforma AWS. Fora do trabalho, ele gosta de explorar novos destinos de viagem e gastronomia e de passar bons momentos com sua família.
Bênção Bamiduro faz parte da equipe de gerenciamento de produtos do Amazon Redshift. Ela trabalha com clientes para ajudar a explorar o uso do Amazon Redshift ML em seus information warehouses. Nas horas vagas, Blessing adora viagens e aventuras.
Ekta Ahuja é arquiteto de soluções especialista em Amazon Redshift na AWS. Ela é apaixonada por ajudar os clientes a criar soluções de dados e análises escalonáveis e robustas. Antes da AWS, ela trabalhou em diversas funções diferentes de engenharia e análise de dados. Fora do trabalho, ela gosta de fotografia de paisagem, viagens e jogos de tabuleiro.