STV_QUERY_METRICS - Amazon Redshift

STV_QUERY_METRICS

Tiene información acerca de las métricas, como la cantidad de filas procesadas, el uso de la CPU, la entrada/salida y el uso del disco para las consultas activas que se están ejecutando en colas de consultas (clases de servicios) definidas por el usuario. Para ver las métricas de las consultas que se han completado, consulte la tabla de sistema STL_QUERY_METRICS.

Las métricas de consultas se muestran en intervalos de un segundo. Por este motivo, diferentes ejecuciones de la misma consulta pueden devolver horas que presentan una pequeña diferencia. Además, es posible que los segmentos de consultas que se ejecutan en menos de 1 segundo no se registren.

STV_QUERY_METRICS hace un seguimiento y agrega métricas en el de nivel consulta, segmento y paso. Para obtener más información acerca de los segmentos y los pasos de las consultas, consulte Flujo de trabajo de planificación y ejecución de consultas. Distintas métricas (como max_rows, cpu_time, etc.) se suman en todos los sectores de un nodo. Para obtener más información acerca de los sectores de nodos, consulte Arquitectura del sistema de almacenamiento de datos.

Para determinar en qué nivel de fila se informa sobre las métricas, examine las columnas segment y step_type:

  • Si tanto segment como step_type son igual a -1, la fila se informa sobre las métricas en el nivel consulta.

  • Si segment no es -1 y step_type es -1, la fila se informa sobre las métricas en el nivel segmento.

  • Si tanto segment como step_type no son -1, la fila se informa sobre las métricas en el nivel paso.

STV_QUERY_METRICS es visible para todos los usuarios. Los superusuarios pueden ver todas las filas; los usuarios normales solo pueden ver sus datos. Para obtener más información, consulte Visibilidad de datos en las tablas y vistas de sistema.

Algunos o todos los datos de esta tabla también están en la vista de monitoreo SYS SYS_QUERY_DETAIL. Los datos de la vista de monitoreo SYS están formateados para que sean más fáciles de usar y entender. Se recomienda utilizar la vista de monitoreo SYS para las consultas.

Columnas de la tabla

Nombre de la columna Tipo de datos Descripción
userid integer ID del usuario que ejecutó la consulta que generó la entrada.
service_class integer ID para la cola de consultas de WLM (clase de servicio). Las colas de consultas se definen en la configuración de WLM. Las métricas solo se informan para las colas definidas por el usuario.
consulta integer ID de la consulta. La columna de consulta puede usarse para combinar otras vistas y tablas del sistema.
starttime Marca de tiempo Hora en UTC en la que la consulta comenzó a ejecutarse, con 6 dígitos de precisión para los segundos fraccionados. Por ejemplo: 2009-06-12 11:29:19.131358.
slices integer Cantidad de sectores para el clúster.
segment integer Número del segmento. Una consulta consta de distintos segmentos y cada segmento consta de uno o más pasos. Los segmentos de una consulta se ejecutan en paralelo. Cada segmento se ejecuta en un solo proceso. Si el valor del segmento es -1, los valores métricos del segmento se acumulan hasta el nivel consulta.
step_type integer Tipo de paso que se ejecutó. Para obtener una descripción de los tipos de pasos, consulte Tipos de pasos.
rows bigint Cantidad de filas procesadas por un paso.
max_rows bigint Cantidad máxima de filas de salida para un paso, acumuladas en todos los sectores.
cpu_time bigint Tiempo de CPU utilizado, en microsegundos. En el nivel segmento, el tiempo de CPU total para el segmento en todos los sectores. En el nivel consulta, la suma de los tiempos de CPU para la consulta en todos los sectores y segmentos.
max_cpu_time bigint Tiempo de CPU máximo utilizado, en microsegundos. En el nivel segmento, el tiempo de CPU máximo utilizado por el segmento en todos los sectores. En el nivel consulta, el tiempo de CPU máximo utilizado por cualquier segmento de la consulta.
blocks_read bigint Cantidad de bloques de 1 MB leídos por la consulta o por el segmento.
max_blocks_read bigint Cantidad máxima de bloques de 1 MB leídos por el segmento, acumulados en todos los sectores. En el nivel segmento, la cantidad máxima de bloques de 1 MB leídos para el segmento en todos los sectores. En el nivel consulta, la cantidad máxima de bloques de 1 MB leídos por cualquier segmento de la consulta.
run_time bigint

Tiempo de ejecución total, sumado en todos los sectores. El tiempo de ejecución no incluye el tiempo de espera.

En el nivel segmento, el tiempo de ejecución para el segmento, sumado en todos los sectores. En el nivel consulta, el tiempo de ejecución para la consulta, sumado en todos los sectores y segmentos. Como este valor es una suma, el tiempo de ejecución no está relacionado con el tiempo de ejecución de la consulta.

max_run_time bigint El tiempo máximo transcurrido para un segmento, en microsegundos. En el nivel segmento, el tiempo máximo de ejecución para el segmento en todos los sectores. En el nivel consulta, el tiempo máximo de ejecución para cualquier segmento de la consulta.
max_blocks_to_disk bigint La cantidad máxima de espacio de disco utilizado para grabar los resultados intermedios, en bloques de 1 MB. En el nivel segmento, la cantidad máxima de espacio en disco utilizada por el segmento en todos los sectores. En el nivel consulta, la cantidad máxima de espacio en disco utilizada por cualquier segmento de la consulta.
blocks_to_disk bigint La cantidad de espacio de disco utilizado por una consulta o un segmento para grabar los resultados intermedios, en bloques de 1 MB.
paso integer Paso de la consulta que se ejecutó.
max_query_scan_size bigint El tamaño máximo de los datos examinados por una consulta, en MB. En el nivel segmento, el tamaño máximo de datos examinados por el segmento en todos los sectores. En el nivel consulta, el tamaño máximo de datos examinados por cualquier segmento de la consulta.
query_scan_size bigint El tamaño de los datos examinados por una consulta, en MB.
query_priority integer La prioridad de la consulta. Los valores posibles son -1, 0, 1, 2, 3 y 4, donde -1 significa que no se admite la prioridad de la consulta.
query_queue_time bigint La cantidad de tiempo en microsegundos que la consulta estuvo en cola.

Tipos de pasos

En la siguiente tabla, se muestran los tipos de pasos relevantes para usuarios de bases de datos. En la tabla no se muestran los tipos de pasos que son solo para uso interno. Si el tipo de paso es -1, la métrica no se informa a nivel paso.

Step type (Tipo de paso) Descripción
1 Examinar tabla
2 Insertar filas
3 Añadir filas
6 Paso de ordenación
7 Paso de fusión
8 Paso de distribución
9 Difundir paso de distribución
10 Combinación hash
11 Combinación de fusión
12 Paso guardar
14 Hash
15 Combinación de bucle anidado
16 Proyectar campos y expresiones
17 Limitar la cantidad de filas devueltas
18 Único
20 Eliminar filas
26 Limitar la cantidad de filas ordenadas devueltas
29 Calcular una función de ventana
32 Función definida por el usuario (UDF)
33 Paso único
37 Devolver filas del nodo principal al cliente
38 Devolver filas de los nodos de computación al nodo principal
40 Examen de Spectrum

Consulta de ejemplo

Para encontrar consultas activas con un tiempo alto de CPU (más de 1 000 segundos), ejecute la siguiente consulta.

select query, cpu_time / 1000000 as cpu_seconds from stv_query_metrics where segment = -1 and cpu_time > 1000000000 order by cpu_time; query | cpu_seconds ------+------------ 25775 | 9540

Para encontrar consultas activas con una combinación de bucle anidado que devolvieron más de un millón de filas, ejecute la siguiente consulta.

select query, rows from stv_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 1580225854

Para encontrar consultas activas que se ejecutaron por más de 60 segundos y que usaron menos de 10 segundos de tiempo de CPU, ejecute la siguiente consulta.

select query, run_time/1000000 as run_time_seconds from stv_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114