Etapa 6: Consultar as tabelas do sistema - Amazon Redshift

Etapa 6: Consultar as tabelas do sistema

Além das tabelas que você criou, seu banco de dados contém uma série de tabelas do sistema. Essas tabelas do sistema contêm informações sobre a sua instalação e sobre várias consultas e processos que são executados no sistema. É possível consultar essas tabelas do sistema para coletar informações sobre o banco de dados.

nota

A descrição de cada tabela nesta documentaçã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.

O Amazon Redshift fornece acesso aos seguintes tipos de tabelas do sistema:

  • Tabelas STL

    Essas tabelas de sistema são geradas a partir de arquivos de log do Amazon Redshift para fornecer um histórico do sistema. As tabelas de log têm um prefixo STL.

  • Tabelas STV

    Essas tabelas são tabelas virtuais do sistema que contêm snapshots dos dados atuais do sistema. As tabelas de snapshot têm um prefixo STV.

  • Visualizações do sistema

    As exibições do sistema contêm um subconjunto de dados encontrados em várias tabelas STL e STV do . As exibições do sistema têm um prefixo SVV ou SVL.

  • Tabelas de catálogo do sistema

    As tabelas de catálogo do sistema armazenam os metadados do esquema, como informações sobre as tabelas e as colunas. As tabelas de catálogo do sistema têm o prefixo PG.

Para recuperar informações da tabela do sistema sobre uma consulta, pode ser necessário especificar o ID do processo associado a essa consulta. Para obter mais informações, consulte Determinar o ID do processo de uma consulta em execução.

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 (1 row)

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 (1 row) 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 (2 rows)

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

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 (4 rows)

Para obter mais informações, consulte PG_TABLE_DEF.

Você também pode usar o editor de consultas v2 para visualizar todas as tabelas em um esquema especificado escolhendo primeiro um banco de dados ao qual 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 | ******** | | (3 rows)

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 | ******** | | (2 rows)

Visualização de consultas recentes

No exemplo anterior, o ID do usuário (USESYSID) para adminuser é 100. Para listar as cinco consultas mais recentes executadas por adminuser, você pode consultar a exibição SVL_QLOG.

A exibição SVL_QLOG é um subconjunto de informações, mais fácil de ler, da tabela STL_QUERY. Você pode usar essa visualização para localizar o ID da consulta (QUERY) ou o ID do processo (PID) para uma consulta executada recentemente. Você também pode usar esta visualização para verificar quanto tempo levou para uma consulta ser concluída. A exibição SVL_QLOG inclui os primeiros 60 caracteres da string da consulta (SUBSTRING) para ajudá-lo a encontrar uma consulta específica. Use a cláusula LIMIT com a instrução SELECT para limitar os resultados a cinco linhas.

SELECT query, pid, elapsed, substring from svl_qlog WHERE userid = 100 ORDER BY starttime desc LIMIT 4;

O resultado será semelhante ao seguinte:

query| pid | elapsed | substring ------+-------+----------+---------------------------------------------------------------- 892 | 21046 | 55868 | SELECT query, pid, elapsed, substring from svl_qlog WHERE us 620 | 17635 | 1296265 | SELECT query, pid, elapsed, substring from svl_qlog WHERE us 610 | 17607 | 82555 | SELECT * from DEMO; 596 | 16762 | 226372 | INSERT INTO DEMO VALUES (100);)