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
comostep_type
son igual a-1
, la fila se informa sobre las métricas en el nivel consulta. -
Si
segment
no es-1
ystep_type
es-1
, la fila se informa sobre las métricas en el nivel segmento. -
Si tanto
segment
comostep_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