* split up select.md * array-join.md basic refactoring * distinct.md basic refactoring * format.md basic refactoring * from.md basic refactoring * group-by.md basic refactoring * having.md basic refactoring * additional index.md refactoring * into-outfile.md basic refactoring * join.md basic refactoring * limit.md basic refactoring * limit-by.md basic refactoring * order-by.md basic refactoring * prewhere.md basic refactoring * adjust operators/index.md links * adjust sample.md links * adjust more links * adjust operatots links * fix some links * adjust aggregate function article titles * basic refactor of remaining select clauses * absolute paths in make_links.sh * run make_links.sh * remove old select.md locations * translate docs/es * translate docs/fr * translate docs/fa * remove old operators.md location * change operators.md links * adjust links in docs/es * adjust links in docs/es * minor texts adjustments * wip * update machine translations to use new links * fix changelog * es build fixes * get rid of some select.md links * temporary adjust ru links * temporary adjust more ru links * improve curly brace handling * adjust ru as well * fa build fix * ru link fixes * zh link fixes * temporary disable part of anchor checks
4.0 KiB
machine_translated | machine_translated_rev | toc_priority | toc_title |
---|---|---|---|
true | 72537a2d52 |
54 | Generación de perfiles de consultas |
Analizador de consultas de muestreo
ClickHouse ejecuta el generador de perfiles de muestreo que permite analizar la ejecución de consultas. Utilizando el generador de perfiles puede encontrar rutinas de código fuente que se utilizan con más frecuencia durante la ejecución de la consulta. Puede rastrear el tiempo de CPU y el tiempo de reloj de pared invertido, incluido el tiempo de inactividad.
Para usar el generador de perfiles:
-
Configurar el trace_log sección de la configuración del servidor.
Esta sección configura la trace_log tabla del sistema que contiene los resultados del funcionamiento del generador de perfiles. Está configurado de forma predeterminada. Recuerde que los datos de esta tabla solo son válidos para un servidor en ejecución. Después de reiniciar el servidor, ClickHouse no limpia la tabla y toda la dirección de memoria virtual almacenada puede dejar de ser válida.
-
Configurar el Los resultados de la prueba o query_profiler_real_time_period_ns configuración. Ambos ajustes se pueden utilizar simultáneamente.
Estas opciones le permiten configurar temporizadores del generador de perfiles. Como estos son los ajustes de sesión, puede obtener diferentes frecuencias de muestreo para todo el servidor, usuarios individuales o perfiles de usuario, para su sesión interactiva y para cada consulta individual.
La frecuencia de muestreo predeterminada es una muestra por segundo y tanto la CPU como los temporizadores reales están habilitados. Esta frecuencia permite recopilar suficiente información sobre el clúster ClickHouse. Al mismo tiempo, al trabajar con esta frecuencia, el generador de perfiles no afecta el rendimiento del servidor ClickHouse. Si necesita perfilar cada consulta individual, intente usar una mayor frecuencia de muestreo.
Para analizar el trace_log
tabla del sistema:
-
Instale el
clickhouse-common-static-dbg
paquete. Ver Instalar desde paquetes DEB. -
Permitir funciones de introspección allow_introspection_functions configuración.
Por razones de seguridad, las funciones de introspección están deshabilitadas de forma predeterminada.
-
Utilice el
addressToLine
,addressToSymbol
ydemangle
funciones de la introspección para obtener nombres de funciones y sus posiciones en el código ClickHouse. Para obtener un perfil para alguna consulta, debe agregar datos deltrace_log
tabla. Puede agregar datos por funciones individuales o por los seguimientos de pila completos.
Si necesita visualizar trace_log
información, intente Flamegraph y Nivel de Cifrado WEP.
Ejemplo
En este ejemplo nos:
-
Filtrado
trace_log
datos por un identificador de consulta y la fecha actual. -
Agregando por seguimiento de pila.
-
Usando funciones de introspección, obtendremos un informe de:
- Nombres de símbolos y funciones de código fuente correspondientes.
- Ubicaciones del código fuente de estas funciones.
SELECT
count(),
arrayStringConcat(arrayMap(x -> concat(demangle(addressToSymbol(x)), '\n ', addressToLine(x)), trace), '\n') AS sym
FROM system.trace_log
WHERE (query_id = 'ebca3574-ad0a-400a-9cbc-dca382f5998c') AND (event_date = today())
GROUP BY trace
ORDER BY count() DESC
LIMIT 10
{% include "examples/sampling_query_profiler_result.txt" %}