Paso 6: consultar las tablas del sistema - Amazon Redshift

Paso 6: consultar las tablas del sistema

Además de las tablas que crea, su almacenamiento de datos contiene una serie de tablas y vistas del sistema. Estas tablas de sistema tienen información relacionada con la instalación y con las diferentes consultas y procesos que se están ejecutando en el sistema. Puede consultar estas tablas de sistema para recopilar información relacionada con su base de datos. Para obtener más información, consulte Referencia de las tablas y vistas de sistema en la Guía para desarrolladores de bases de datos de Amazon Redshift. La descripción de cada tabla o vista indica si una tabla es visible para todos los usuarios o si es visible solo para los superusuarios. Inicie sesión como superusuario para consultar las tablas que son visibles solo para los superusuarios.

Vista de una lista de los nombres de las tablas

Para ver una lista de todas las tablas de un esquema, puede consultar la tabla de catálogo del sistema PG_TABLE_DEF. En primer lugar, puede examinar la configuración de search_path.

SHOW search_path;

El resultado debería ser similar al siguiente.

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

En el siguiente ejemplo, se agrega el esquema SALES en la ruta de búsqueda y muestra todas las tablas en el 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

En el siguiente ejemplo, se muestra una lista de todas las tablas llamadas DEMO en todos los esquemas de la base de datos actual.

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 obtener más información, consulte PG_TABLE_DEF.

También puede utilizar el editor de consultas de Amazon Redshift v2 para ver todas las tablas de un esquema especificado si elige primero una base de datos a la que desea conectarse.

Ver usuarios

Puede consultar el catálogo PG_USER para ver una lista de todos los usuarios, junto con el ID de usuario (USESYSID) y los privilegios de usuario.

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 | ******** | |

Amazon Redshift utiliza internamente el nombre de usuario rdsdb para realizar tareas administrativas y de mantenimiento de rutina. Puede filtrar su consulta para que solo se vean los nombres de usuario definidos por el usuario si agrega where usesysid > 1 a la instrucción 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 | ******** | |

Vista de consultas recientes

En el ejemplo anterior, el ID de usuario (user_id) para adminuser es 100. Para encontrar las cuatro consultas más recientes que ejecutó adminuser, puede consultar la vista SYS_QUERY_HISTORY.

Puede utilizar esta vista para encontrar el ID de consulta (query_id) o el ID de proceso (session_id) para una consulta ejecutada recientemente. También puede utilizar esta vista para verificar cuánto demora en completarse una consulta. SYS_QUERY_HISTORY incluye los primeros 4000 caracteres de la cadena de consulta (query_text) para ayudarle a localizar una consulta específica. Utilice la cláusula LIMIT con la instrucción SELECT para limitar los 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;

El resultado es similar al siguiente:

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);

Determinación del ID de sesión de una consulta en ejecución

Es posible que tenga que especificar el ID de sesión (ID de proceso) asociado a la consulta para recuperar información de las tablas del sistema sobre una consulta. También es posible que necesite encontrar el ID de sesión para una consulta que sigue en ejecución. Por ejemplo, necesita el ID de sesión si debe cancelar una consulta que está tardando mucho en ejecutarse en un clúster aprovisionado. Puede consultar la tabla del sistema STV_RECENTS para obtener una lista de los ID de sesión de las consultas en ejecución, junto con la cadena de consulta correspondiente. Si su consulta devuelve múltiples sesiones, puede analizar el texto de la consulta para determinar cuál es el ID de sesión que necesita.

Para determinar el ID de sesión de una consulta en ejecución, ejecute la siguiente instrucción SELECT.

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