Journaux des requêtes lentes dans Azure Database for MySQL
S’APPLIQUE À : Azure Database pour MySQL - Serveur unique
Important
Le serveur unique Azure Database pour MySQL est en voie de mise hors service. Nous vous conseillons vivement de procéder à une mise à niveau vers Azure Database pour MySQL – Serveur flexible. Pour obtenir plus d’informations sur la migration vers Azure Database pour MySQL – Serveur flexible, consultez Qu’en est-il du Serveur unique Azure Database pour MySQL ?
Dans Azure Database pour MySQL, le journal des requêtes lentes est disponible pour les utilisateurs. L’accès aux journaux des transactions n’est pas pris en charge. Le journal des requêtes lentes peut être utilisé pour identifier les goulots d’étranglement en matière de performances, afin de les faire disparaître.
Pour plus d’informations sur le journal des requêtes lentes MySQL, consultez la section sur le journal des requêtes lentes du manuel de référence MySQL.
Lorsque la fonctionnalité Magasin des requêtes est activée sur votre serveur, vous pouvez voir les requêtes telles que « CALL mysql.az_procedure_collect_wait_stats (900, 30);
» journalisées dans les journaux de requêtes lentes. Ce comportement est attendu, car la fonctionnalité Magasin des requêtes collecte des statistiques sur vos requêtes.
Configurer la journalisation des requêtes lentes
Par défaut, le journal des requêtes lentes est désactivé. Pour l’activer, affectez la valeur ON à slow_query_log
. Pour ce faire, utilisez le portail Azure ou Azure CLI.
Les autres paramètres que vous pouvez ajuster incluent :
- long_query_time : si une requête dure plus longtemps que long_query_time (en secondes), cette requête est enregistrée. La valeur par défaut est 10 secondes.
- log_slow_admin_statements : si ce paramètre est activé, inclut des instructions d’administration telles que ALTER_TABLE et ANALYZE_TABLE dans les instructions écrites dans le journal des requêtes lentes.
- log_queries_not_using_indexes : détermine si les requêtes qui n’utilisent pas les index sont enregistrées dans le journal des requêtes lentes.
- log_throttle_queries_not_using_indexes : Ce paramètre 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 ON.
- log_output : si défini sur « File », permet au journal des requêtes lentes d’être écrit dans le stockage du serveur local et dans les journaux de diagnostic Azure Monitor. S’il est défini sur « None », le journal des requêtes lentes est uniquement écrit dans les journaux de diagnostics Azure Monitor.
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 ON 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.
Si vous envisagez de journaliser les requêtes lentes pendant une période prolongée, il est recommandé de définir log_output
sur « None ». Si la valeur est « File », ces journaux sont écrits dans le stockage du serveur local, ce qui peut affecter les performances de MySQL.
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
Il existe deux options d’accès aux journaux de requêtes lentes dans Azure Database pour MySQL : le stockage sur le serveur local ou les journaux de diagnostic Azure Monitor. Ceci est défini à l’aide du paramètre log_output
.
Pour le stockage sur le serveur local, vous pouvez lister et télécharger les journaux des requêtes lentes à l’aide du portail Azure ou de l’interface de ligne de commande Azure. Dans le portail Azure, accédez à votre serveur dans le portail Azure. Sous l’en-tête Supervision, sélectionnez la page Journaux d’activité des serveurs. Pour plus d’informations sur Azure CLI, consultez Configurer et accéder aux journaux des requêtes lentes à l’aide d’Azure CLI.
Les journaux de diagnostics Azure Monitor vous permettent d’acheminer les journaux de requêtes lentes vers des journaux Azure Monitor (Log Analytics), le stockage Azure ou Event Hubs. Pour plus d’informations, voir plus bas.
Rétention du journal de stockage du serveur local
Lorsque vous vous connectez au stockage local du serveur, les journaux sont disponibles jusqu’à sept jours après leur création. Si la taille totale des journaux disponibles est supérieure à 7 Go, les fichiers les plus anciens sont supprimés jusqu’à ce que de l’espace soit disponible. La limite de stockage de 7 Go pour les journaux de serveurs est disponible gratuitement et ne peut pas être étendue.
Une rotation des journaux d’activité s’effectue toutes les 24 heures ou une fois les 7 Go atteints, selon ce qui se produit en premier.
Notes
La rétention du journal ci-dessus ne s’applique pas aux journaux qui sont acheminés à l’aide des journaux de diagnostic Azure Monitor. Vous pouvez changer la période de conservation pour les récepteurs de données (par exemple, Stockage Azure).
Journaux de diagnostic
Azure Database pour MySQL est intégré aux journaux de diagnostic Azure Monitor. Une fois que vous avez activé les journaux des requêtes lentes sur votre serveur MySQL, vous pouvez choisir qu’ils soient transmis vers des journaux Azure Monitor, Event Hubs ou le Stockage Azure. Pour en savoir plus sur l’activation des journaux de diagnostic, consultez la section des procédures de la documentation des journaux de diagnostic.
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 ce que contient chaque journal. 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_d |
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
, 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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_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 LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_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 LogicalServerName_s
Représenter sous forme de graphique la distribution de requête lente sur un serveur particulier
AzureDiagnostics | where LogicalServerName_s == '<your server name>' | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | summarize count() by LogicalServerName_s, bin(TimeGenerated, 5m) | render timechart
Afficher les requêtes de plus de 10 secondes sur tous les serveurs MySQL avec les journaux de diagnostic activés
AzureDiagnostics | where Category == 'MySqlSlowLogs' | project TimeGenerated, LogicalServerName_s, start_time_t , query_time_d, sql_text_s | where query_time_d > 10