ClickHouse/docs/fr/operations/optimizing-performance/sampling-query-profiler.md
Ivan Blinkov d91c97d15d
[docs] replace underscores with hyphens (#10606)
* Replace underscores with hyphens

* remove temporary code

* fix style check

* fix collapse
2020-04-30 21:19:18 +03:00

65 lines
4.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
machine_translated: true
machine_translated_rev: f865c9653f9df092694258e0ccdd733c339112f5
toc_priority: 54
toc_title: "Profilage De Requ\xEAte"
---
# Échantillonnage Du Profileur De Requête {#sampling-query-profiler}
ClickHouse exécute un profileur déchantillonnage qui permet danalyser lexécution des requêtes. En utilisant profiler, vous pouvez trouver des routines de code source qui ont utilisé le plus fréquemment lors de lexécution de la requête. Vous pouvez suivre le temps CPU et le temps dhorloge murale passé, y compris le temps dinactivité.
Utilisation du générateur de profils:
- Installation de la [trace\_log](../server-configuration-parameters/settings.md#server_configuration_parameters-trace_log) la section de la configuration du serveur.
Cette section configure le [trace\_log](../../operations/system-tables.md#system_tables-trace_log) tableau système contenant les résultats du fonctionnement du profileur. Il est configuré par défaut. Rappelez-vous que les données de ce tableau est valable que pour un serveur en cours dexécution. Après le redémarrage du serveur, ClickHouse ne nettoie pas la table et toute ladresse de mémoire virtuelle stockée peut devenir invalide.
- Installation de la [query\_profiler\_cpu\_time\_period\_ns](../settings/settings.md#query_profiler_cpu_time_period_ns) ou [query\_profiler\_real\_time\_period\_ns](../settings/settings.md#query_profiler_real_time_period_ns) paramètre. Les deux paramètres peuvent être utilisés simultanément.
Ces paramètres vous permettent de configurer les minuteries du profileur. Comme il sagit des paramètres de session, vous pouvez obtenir une fréquence déchantillonnage différente pour lensemble du serveur, les utilisateurs individuels ou les profils dutilisateurs, pour votre session interactive et pour chaque requête individuelle.
La fréquence déchantillonnage par défaut est dun échantillon par seconde et le processeur et les minuteries réelles sont activés. Cette fréquence permet de collecter suffisamment dinformations sur le cluster ClickHouse. En même temps, en travaillant avec cette fréquence, profiler naffecte pas les performances du serveur ClickHouse. Si vous avez besoin de profiler chaque requête individuelle, essayez dutiliser une fréquence déchantillonnage plus élevée.
Pour analyser les `trace_log` système de table:
- Installer le `clickhouse-common-static-dbg` paquet. Voir [Installer à partir de paquets DEB](../../getting-started/install.md#install-from-deb-packages).
- Autoriser les fonctions dintrospection par [allow\_introspection\_functions](../settings/settings.md#settings-allow_introspection_functions) paramètre.
Pour des raisons de sécurité, les fonctions dintrospection sont désactivées par défaut.
- Lutilisation de la `addressToLine`, `addressToSymbol` et `demangle` [fonctions dintrospection](../../sql-reference/functions/introspection.md) pour obtenir les noms de fonctions et leurs positions dans le code ClickHouse. Pour obtenir un profil pour une requête, vous devez agréger les données du `trace_log` table. Vous pouvez agréger des données par des fonctions individuelles ou par lensemble des traces de la pile.
Si vous avez besoin de visualiser `trace_log` info, essayez [flamegraph](../../interfaces/third-party/gui/#clickhouse-flamegraph) et [speedscope](https://github.com/laplab/clickhouse-speedscope).
## Exemple {#example}
Dans cet exemple, nous:
- Filtrage `trace_log` données par un identifiant de requête et la date actuelle.
- Agrégation par trace de pile.
- En utilisant les fonctions dintrospection, nous obtiendrons un rapport de:
- Noms des symboles et des fonctions de code source correspondantes.
- Emplacements de code Source de ces fonctions.
<!-- -->
``` sql
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
```
``` text
{% include "examples/sampling_query_profiler_result.txt" %}
```