Journaux des requêtes lentes dans Azure Database pour MySQL - Serveur flexible

S’APPLIQUE À : Azure Database pour MySQL - Serveur flexible

Dans Azure Database pour MySQL serveur flexible, le journal des requêtes lentes est disponible pour les utilisateurs afin de configurer et d’accéder. Les journaux des requêtes lentes sont désactivés par défaut et peuvent être activés pour faciliter l’identification de goulots d’étranglement des performances lors de la résolution des problèmes.

Pour plus d’informations sur le journal des requêtes lentes MySQL, consultez la section sur le journal des requêtes lentes dans la documentation du moteur MySQL.

Configurer la journalisation des requêtes lentes

Par défaut, le journal des requêtes lentes est désactivé. Pour activer les journaux, définissez le paramètre de serveur slow_query_log sur ACTIVÉ. Vous pouvez configurer ce paramètre à l’aide du portail Azure ou d’Azure CLI.

Les autres paramètres que vous pouvez ajuster pour contrôler le comportement de la journalisation des requêtes lentes sont les suivants :

  • long_query_time : consignez une requête si sa durée d’exécution est supérieure à long_query_time (en secondes). La valeur par défaut est 10 secondes. Le paramètre serveur long_query_time s’applique dans l’ensemble à toutes les connexions nouvellement établies dans MySQL. Toutefois, cela n’affecte pas les threads déjà connectés. Il est recommandé de se reconnecter à Azure Database pour MySQL serveur flexible à partir de l’application ou de redémarrer le serveur permet de supprimer les threads avec des valeurs plus anciennes de « long_query_time » et d’appliquer la valeur de paramètre mise à jour.
  • log_slow_admin_statements : détermine si les instructions administratives (par exemple, ALTER_TABLE, ANALYZE_TABLE) sont enregistrées.
  • log_queries_not_using_indexes : détermine si les requêtes qui n’utilisent pas d’index sont journalisées.
  • log_throttle_queries_not_using_indexes : limite le nombre de requêtes hors index qui peuvent être écrites dans le journal des requêtes lentes. Ce paramètre prend effet lorsque log_queries_not_using_indexes est défini sur ACTIVÉ

Important

Si vos tables ne sont pas indexées, la définition des paramètres log_queries_not_using_indexes et log_throttle_queries_not_using_indexes sur ACTIVÉ peut affecter les performances de MySQL, car toutes les requêtes exécutées sur ces tables non indexées sont écrites dans le journal des requêtes lentes.

Consultez la documentation MySQL consacrée au journal des requêtes lentes pour obtenir une description complète des paramètres du journal des requêtes lentes.

Accéder aux journaux des requêtes lentes

Les journaux des requêtes lentes sont intégrés aux paramètres de diagnostic d’Azure Monitor. Une fois que vous avez activé les journaux des requêtes lentes sur votre instance de serveur flexible Azure Database pour MySQL, vous pouvez les émettre dans les journaux Azure Monitor, Event Hubs ou Stockage Azure. Pour en savoir plus sur les paramètres de diagnostic, consultez la Documentation des journaux de diagnostic. Pour en savoir plus sur l’activation des paramètres de diagnostic dans le portail Azure, consultez l’article du portail sur le journal des requêtes lentes.

Notes

Les comptes de stockage Premium ne sont pas pris en charge si vous envoyez les journaux au stockage Azure par le biais des diagnostics et des paramètres.

Le tableau suivant décrit la sortie du journal des requêtes lentes. En fonction de la méthode de sortie, les champs inclus et l’ordre dans lequel ils apparaissent peuvent varier.

Propriété Description
TenantId Votre ID d’abonné
SourceSystem Azure
TimeGenerated [UTC] Horodatage du moment où le journal a été enregistré en UTC
Type Type de journal. Toujours AzureDiagnostics
SubscriptionId GUID de l’abonnement auquel appartient le serveur
ResourceGroup Nom du groupe de ressources auquel le serveur appartient
ResourceProvider Nom du fournisseur de ressources. Toujours MICROSOFT.DBFORMYSQL
ResourceType Servers
ResourceId URI de ressource
Resource Nom du serveur
Category MySqlSlowLogs
OperationName LogEvent
Logical_server_name_s Nom du serveur
start_time_t [UTC] Heure de début de la requête
query_time_s Durée totale d’exécution de la requête en secondes
lock_time_s Durée totale en secondes pendant laquelle la requête a été verrouillée
user_host_s Nom d’utilisateur
rows_sent_s Nombre de lignes envoyées
rows_examined_s Nombre de lignes examinées
last_insert_id_s last_insert_id
insert_id_s ID de l’insertion
sql_text_s Requête complète
server_id_s ID du serveur
thread_id_s ID du thread
\_ResourceId URI de ressource

Notes

Pour sql_text_s, le journal est tronqué s’il dépasse 2 048 caractères.

Analyser les journaux dans Azure Monitor

Une fois vos journaux des requêtes lentes canalisés vers des journaux Azure Monitor via des journaux de diagnostic, vous pouvez effectuer une analyse plus poussée de vos requêtes lentes. Voici quelques exemples de requêtes pour vous aider à commencer. Veillez à mettre à jour les exemples ci-dessous avec le nom de votre serveur.

  • Requêtes de plus de 10 secondes sur un serveur particulier

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    
  • Lister les 5 requêtes les plus longues sur un serveur particulier

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | order by query_time_d desc
    | take 5
    
  • Résumer les requêtes lentes par temps de requête minimal, maximal, moyen et d’écart type sur un serveur particulier

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count(), min(query_time_d), max(query_time_d), avg(query_time_d), stdev(query_time_d), percentile(query_time_d, 95) by Resource 
    
  • Représenter sous forme de graphique la distribution de requête lente sur un serveur particulier

    AzureDiagnostics
    | where Resource  == '<your server name>'
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | summarize count() by Resource , bin(TimeGenerated, 5m)
    | render timechart
    
  • Afficher les requêtes de plus de 10 secondes sur toutes les instances de serveur flexibles Azure Database pour MySQL avec les journaux de diagnostic activés

    AzureDiagnostics
    | where Category == 'MySqlSlowLogs'
    | project TimeGenerated, Resource , event_class_s, start_time_t , query_time_d, sql_text_s
    | where query_time_d > 10
    

Étapes suivantes