Ir para o conteúdo

Por que não consigo combinar IDs de consulta em tabelas do sistema no Amazon Redshift?

3 minuto de leitura
0

Quero combinar IDs de consulta entre tabelas e visualizações do sistema no Amazon Redshift.

Breve descrição

É possível usar a coluna query_id como ID de consulta para visualizações SYS, incluindo SYS_QUERY_HISTORY. Para tabelas e visualizações STL/SVL, incluindo STL_QUERY, é possível usar a coluna query como ID da consulta. A coluna query identifica as consultas secundárias reescritas que o Amazon Redshift gera ao processar a consulta original. Para mais informações, consulte Melhoria do rastreamento do identificador de consultas usando as exibições de monitoramento SYS.

Resolução

Conceda acesso às tabelas do sistema

Para combinar os IDs de consulta nas tabelas do sistema no Amazon Redshift, o usuário deve ser um superusuário ou ter os privilégios necessários. Para obter mais informações sobre como conceder acesso a um usuário específico, consulte Visibilidade de dados em tabelas e visualizações do sistema.

Para conceder acesso a um usuário específico e atribuir um perfil definido pelo sistema, execute o seguinte comando:

GRANT ROLE sys:monitor TO database_user;

Observação: substitua database_user pelo usuário do banco de dados.

Correlacione IDs de consulta

O Amazon Redshift pode não fornecer correspondências exatas entre as colunas query_id e query. No entanto, é possível pesquisar possíveis correspondências entre as tabelas SYS e STL/SVL.

Use query_id do SYS para obter o ID da consulta em STL/SVL na seguinte consulta:

SELECT query_id, query   FROM sys_query_history a, stl_query b
  WHERE a.query_id = <query_id>
    AND a.transaction_id = b.xid
    AND b.starttime BETWEEN a.start_time AND a.end_time
    AND b.endtime BETWEEN a.start_time AND a.end_time;

Observação: as consultas executadas somente no nó líder estão presentes em SYS_QUERY_HISTORY, mas STL_QUERY exclui essas consultas.

Use a consulta de STL/SVL para obter o id da consulta em SYS na seguinte consulta:

 SELECT query_id, query   FROM sys_query_history a, stl_query b
  WHERE b.query = <query>
    AND a.transaction_id = b.xid
    AND b.starttime BETWEEN a.start_time AND a.end_time
    AND b.endtime BETWEEN a.start_time AND a.end_time;

Encontre o histórico de consultas para declarações SQL idênticas

A saída dessas consultas pode ajudar quando você compara diferentes execuções de consultas. Para encontrar consultas idênticas executadas em momentos diferentes em SYS_QUERY_HISTORY, use as consultas a seguir para recuperar o valor de user_query_hash e suas entradas correspondentes:

 SELECT user_query_hash  FROM sys_query_history
  WHERE query_id = <query_id>;

 SELECT *
  FROM sys_query_history
  WHERE user_query_hash = '<user_query_hash>';

Informações relacionadas

Planejamento de consulta e fluxo de trabalho de execução

AWS OFICIALAtualizada há 5 meses