Consultar as visualizações e tabelas do sistema - Amazon Redshift

Consultar as visualizações e tabelas do sistema

Além das tabelas que você criou, o data warehouse contém uma série de tabelas e visualizações do sistema. Essas visualizações e tabelas contêm informações sobre a instalação e sobre várias consultas e processos que são executados no sistema. É possível consultar essas visualizações e tabelas do sistema para coletar informações sobre o banco de dados. Para ter mais informações, consulte Referência de visualizações e tabelas do sistema no Guia do desenvolvedor de banco de dados do Amazon Redshift. A descrição de cada tabela ou visualização indica se uma tabela é visível para todos os usuários ou apenas para superusuários. Efetue login como superusuário para consultar tabelas que são visíveis apenas para superusuários.

Visualização de uma lista de nomes de tabelas

Para ver uma lista de todas as tabelas em um esquema, você pode consultar a tabela de catálogo do sistema PG_TABLE_DEF. Você pode primeiro examinar a configuração para search_path.

SHOW search_path;

O resultado deve ser semelhante ao seguinte:

search_path --------------- $user, public

O exemplo a seguir inclui o esquema SALES para o caminho de pesquisa e mostra todas as tabelas do esquema SALES.

set search_path to '$user', 'public', 'sales'; SHOW search_path; search_path ------------------------ "$user", public, sales select * from pg_table_def where schemaname = 'sales'; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+----------+------------------------+----------+---------+---------+--------- sales | demo | personid | integer | az64 | f | 0 | f sales | demo | city | character varying(255) | lzo | f | 0 | f

O exemplo a seguir mostra uma lista de todas as tabelas chamadas DEMO em todos os esquemas do banco de dados atual.

set search_path to '$user', 'public', 'sales'; select * from pg_table_def where tablename = 'demo'; schemaname | tablename | column | type | encoding | distkey | sortkey | notnull ------------+-----------+----------+------------------------+----------+---------+---------+--------- public | demo | personid | integer | az64 | f | 0 | f public | demo | city | character varying(255) | lzo | f | 0 | f sales | demo | personid | integer | az64 | f | 0 | f sales | demo | city | character varying(255) | lzo | f | 0 | f

Para obter mais informações, consulte PG_TABLE_DEF.

Também é possível usar o Editor de Consultas do Amazon Redshift v2 para exibir todas as tabelas em um esquema especificado escolhendo primeiro um banco de dados ao qual você deseja se conectar.

Visualização dos usuários

Você pode consultar o catálogo PG_USER para ver uma lista de todos os usuários, junto com o ID do usuário (USESYSID) e os privilégios do usuário.

SELECT * FROM pg_user; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ------------+----------+-------------+----------+-----------+----------+----------+----------- rdsdb | 1 | true | true | true | ******** | infinity | awsuser | 100 | true | true | false | ******** | | guest | 104 | true | false | false | ******** | |

O nome de usuário rdsdb é usado internamente pelo Amazon Redshift para realizar tarefas administrativas e de manutenção de rotina. Você pode filtrar sua consulta para mostrar apenas nomes de usuário definidos pelo usuário, adicionando where usesysid > 1 à sua instrução SELECT.

SELECT * FROM pg_user WHERE usesysid > 1; usename | usesysid | usecreatedb | usesuper | usecatupd | passwd | valuntil | useconfig ------------+----------+-------------+----------+-----------+----------+----------+----------- awsuser | 100 | true | true | false | ******** | | guest | 104 | true | false | false | ******** | |

Visualização de consultas recentes

No exemplo anterior, o ID do usuário (user_id) para adminuser é 100. Para listar as quatro consultas mais recentes executadas por adminuser, consulte a visualização SYS_QUERY_HISTORY.

É possível usar essa visualização para localizar o ID da consulta (QUERY) ou o ID do processo (session_id) para uma consulta executada recentemente. Você também pode usar esta visualização para verificar quanto tempo levou para uma consulta ser concluída. SYS_QUERY_HISTORY inclui os primeiros quatro mil caracteres da string de consulta (query_text) para ajudar você a localizar uma consulta específica. Use a cláusula LIMIT com a declaração SELECT para limitar os resultados.

SELECT query_id, session_id, elapsed_time, query_text FROM sys_query_history WHERE user_id = 100 ORDER BY start_time desc LIMIT 4;

O resultado será semelhante ao seguinte:

query_id | session_id | elapsed_time | query_text ----------+--------------+---------------+---------------------------------------------------------------- 892 | 21046 | 55868 | SELECT query, pid, elapsed, substring from ... 620 | 17635 | 1296265 | SELECT query, pid, elapsed, substring from ... 610 | 17607 | 82555 | SELECT * from DEMO; 596 | 16762 | 226372 | INSERT INTO DEMO VALUES (100);

Determinar o ID da sessão de uma consulta em execução

Para recuperar informações da tabela do sistema sobre uma consulta, pode ser necessário especificar o ID da sessão (ID do processo) associado a essa consulta. Ou pode ser necessário encontrar o ID da sessão de uma consulta que ainda esteja em execução. Por exemplo, você precisará do ID da sessão se houver necessidade de cancelar uma consulta que está demorando muito para ser executada em um cluster provisionado. É possível consultar a tabela do sistema STV_RECENTS para ter uma lista de IDs de sessão das consultas em execução, além da string da consulta correspondente. Se a consulta exibir várias sessões, examine o texto da consulta para determinar qual ID de sessão é necessário.

Para determinar o ID da sessão de uma consulta em execução, execute a declaração SELECT a seguir.

SELECT session_id, user_id, start_time, query_text FROM sys_query_history WHERE status='running';