STL_QUERY_METRICS - Amazon Redshift

STL_QUERY_METRICS

Presenta 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 que se terminaron de ejecutar en colas de consultas (clases de servicios) definidas por el usuario. Para ver las métricas de las consultas activas que están actualmente en ejecución, consulte la vista de sistema STV_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 las consultas que se ejecutan en menos de un segundo no se registren.

STL_QUERY_METRICS hace un seguimiento y agrega métricas en el 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.

La vista SVL_QUERY_METRICS y la vista SVL_QUERY_METRICS_SUMMARY agrupan los datos en esta vista y presentan la información de una manera más accesible.

STL_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 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.
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.
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.
max_rows bigint Cantidad máxima de filas de salida para un paso, acumuladas en todos los sectores.
rows bigint Cantidad de filas procesadas por un paso.
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.
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_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.
blocks_read bigint Cantidad de bloques de 1 MB leídos por la consulta o por el segmento.
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.
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_blocks_to_disk bigint La cantidad máxima de espacio en disco utilizada para grabar los resultados intermedios, en bloques de 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 en disco utilizada por una consulta o un segmento para grabar los resultados intermedios, en bloques de 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.
service_class_name character(64) El nombre de la clase de servicio.

Consulta de ejemplo

Para encontrar consultas 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 stl_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 stl_query_metrics where step_type = 15 and rows > 1000000 order by rows; query | rows ------+----------- 25775 | 2621562702

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 stl_query_metrics where segment = -1 and run_time > 60000000 and cpu_time < 10000000; query | run_time_seconds ------+----------------- 25775 | 114