Utiliser Query Insights pour améliorer les performances des requêtes

Cette page explique comment utiliser le tableau de bord d'Insights sur les requêtes pour détecter et analyser les problèmes de performances.

Présentation

Les insights sur les requêtes vous aident à détecter, à diagnostiquer et à éviter les problèmes de performances des requêtes pour les bases de données Cloud SQL. Il offre un système de surveillance intuitif et fournit des informations de diagnostic qui vous aident à identifier la principale cause des problèmes de performances.

Insights sur les requêtes vous aide à améliorer les performances des requêtes Cloud SQL en suivant les étapes ci-dessous :

Insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus

Si vous utilisez l'édition Cloud SQL Enterprise Plus, vous pouvez accéder à des fonctionnalités supplémentaires dans les insights sur les requêtes pour effectuer des diagnostics avancés des performances des requêtes. En plus des fonctionnalités standards du tableau de bord "Insights sur les requêtes", les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus vous permettent d'effectuer les opérations suivantes:

  • Capturer un texte de requête plus long (jusqu'à 20 ko)
  • Conserver les métriques pendant 30 jours
  • Obtenir des recommandations d'index du conseiller d'index
  • Mettre fin à une session dans les requêtes actives

Le tableau suivant compare les exigences fonctionnelles et les fonctionnalités des insights sur les requêtes pour l'édition Cloud SQL Enterprise avec celles de l'édition Cloud SQL Enterprise Plus.

Zone de comparaison Insights sur les requêtes pour l'édition Cloud SQL Enterprise Insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus
Versions de bases de données compatibles

Toutes les versions des instances suivantes:

  • SQL Server Web
  • SQL Server Standard
  • SQL Server Enterprise

Insights sur les requêtes n'est pas compatible avec les instances de l'édition Express de SQL Server

SQL Server Enterprise version 2019 ou 2022
Types de machines compatibles Compatible avec tous les types de machines Non compatible avec les instances qui utilisent un type de machine à cœur partagé
Régions où le service est disponible Zones régionales Cloud SQL Zones géographiques de l'édition Cloud SQL Enterprise Plus
Durée de conservation des métriques 7 jours 30 jours
Limite maximale de la longueur de la requête 4 500 octets 20 ko
Recommandations du conseiller d'index Non disponible Disponible
Arrêter les sessions dans les requêtes actives Non disponible Disponible

Pour activer les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus lors de la version Preview de votre instance Cloud SQL Enterprise Plus, suivez la procédure décrite dans Activer les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus.

Tarifs

Les insights sur les requêtes ne sont pas facturés. De plus, l'activation des insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus, qui est en preview, ne vous coûtera rien.

Exigences de stockage

Les insights sur les requêtes stockent des données de métriques sur l'instance et nécessitent que vous laissiez le paramètre d'augmentation automatique de l'espace de stockage activé. Des frais de stockage applicables s'appliquent.

Avant de commencer

Avant d'utiliser les insights sur les requêtes, procédez comme suit :

  1. Ajoutez les rôles et les autorisations requis.
  2. Assurez-vous que l'option Activer l'augmentation automatique de l'espace de stockage est activée pour l'instance.

Rôles et autorisations requis

Pour utiliser les insights sur les requêtes, vous devez accorder des rôles avec les autorisations Identity and Access Management requises ou fournir un compte utilisateur disposant des autorisations requises.

Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Pour obtenir les autorisations nécessaires pour accéder à l'historique des données d'exécution des requêtes dans le tableau de bord "Insights sur les requêtes", demandez à votre administrateur de vous accorder les rôles IAM suivants sur le projet qui héberge l'instance Cloud SQL:

Pour en savoir plus sur l'attribution de rôles, consultez la page Gérer l'accès aux projets, aux dossiers et aux organisations.

Ces rôles prédéfinis contiennent les autorisations requises pour accéder à l'historique des données d'exécution des requêtes dans le tableau de bord "Insights sur les requêtes". Pour connaître les autorisations exactes requises, développez la section Autorisations requises :

Autorisations requises

Vous devez disposer des autorisations suivantes pour accéder aux données d'historique de l'exécution des requêtes dans le tableau de bord "Insights sur les requêtes" :

  • databaseinsights.aggregatedStats.query
  • databaseinsights.timeSeries.query

Vous pouvez également obtenir ces autorisations avec des rôles personnalisés ou d'autres rôles prédéfinis.

Par exemple, dans Database Insights, vous pouvez demander à votre administrateur de vous accorder le rôle prédéfini Lecteur de Database Insights (roles/databaseinsights.viewer). Ensuite, dans Cloud SQL, vous pouvez demander à votre administrateur de vous attribuer l'un des rôles prédéfinis suivants :

Activer l'augmentation automatique de l'espace de stockage

Assurez-vous que le paramètre d'instance permettant d'activer l'augmentation automatique de l'espace de stockage reste activé.

Si vous avez précédemment désactivé ce paramètre d'instance, réactivez l'augmentation automatique de l'espace de stockage avant d'activer les insights sur les requêtes.

Activer les insights sur les requêtes

Les utilisateurs qui ont accès au tableau de bord Cloud SQL peuvent accéder aux métriques Query Insights. Si vous êtes autorisé à mettre à jour des instances, vous pouvez activer les insights sur les requêtes. Pour obtenir la liste des autorisations requises pour les instances Cloud SQL, consultez la page Contrôle des accès aux projets Cloud SQL. Si vous ne disposez pas de ces autorisations et que vous souhaitez activer les insights sur les requêtes dans vos instances, contactez votre administrateur.

Console

Activer les insights sur les requêtes pour une instance

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans la tuile Configuration, cliquez sur Modifier la configuration.
  4. Dans la section Personnaliser votre instance, développez Insights sur les requêtes.
  5. Cochez la case Activer Insights sur les requêtes.
  6. Facultatif. Sélectionnez une ou plusieurs des fonctionnalités supplémentaires de Query Insights suivantes:
  7. Personnaliser la longueur des requêtes

    Valeur par défaut : 1024

    Définit la limite de longueur des requêtes sur une valeur spécifiée comprise entre 256 octets et 4 500 octets. Des longueurs de requête plus élevées sont plus utiles pour les requêtes analytiques, mais elles nécessitent également davantage de mémoire. Pour modifier la longueur de la requête, vous devez redémarrer l'instance.

  8. Cliquez sur Enregistrer.

Activer les insights sur les requêtes pour plusieurs instances

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Cliquez sur le menu Autres actions sur n'importe quelle ligne.
  3. Sélectionnez Activer Insights sur les requêtes.
  4. Dans la boîte de dialogue, cochez la case Activer Insights sur les requêtes pour plusieurs instances.
  5. Cliquez sur Activer.
  6. Dans la boîte de dialogue suivante, sélectionnez les instances pour lesquelles vous souhaitez activer Insights sur les requêtes.
  7. Cliquez sur Activer Insights sur les requêtes.

gcloud

Pour activer Insights sur les requêtes pour une instance Cloud SQL à l'aide de gcloud, exécutez gcloud sql instances patch avec l'option --insights-config-query-insights-enabled comme illustré ci-dessous après avoir remplacé INSTANCE_ID par l'ID de l'instance.

    gcloud sql instances patch INSTANCE_ID \
    --insights-config-query-insights-enabled
  

De plus, utilisez une ou plusieurs des options facultatives suivantes :

  • --insights-config-query-string-length

    Définit la limite de longueur par défaut des requêtes de 256 à 4 500 octets. La longueur de requête par défaut est de 1 024 octets. Des longueurs de requête plus élevées sont plus utiles pour les requêtes analytiques, mais elles nécessitent également davantage de mémoire. Pour modifier la longueur de la requête, vous devez redémarrer l'instance.

Remplacez les éléments suivants :

gcloud sql instances patch INSTANCE_ID \
--insights-config-query-insights-enabled \
--insights-config-query-string-length=INSIGHTS_CONFIG_QUERY_STRING_LENGTH \
--tier=API_TIER_STRING \
--region=REGION
  

REST v1

Pour activer Insights sur les requêtes pour une instance Cloud SQL à l'aide de l'API REST, appelez la méthode instances.patch avec les paramètres insightsConfig.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • instance-id : ID de l'instance.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corps JSON de la requête :

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : true } }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Terraform

Pour utiliser Terraform pour activer Insights sur les requêtes pour une instance Cloud SQL, définissez l'indicateur query_insights_enabled sur true.

Vous pouvez également utiliser une ou plusieurs des options facultatives suivantes :

  • query_string_length: la valeur par défaut est 1024, et vous pouvez la configurer sur une valeur comprise entre 256 et 4500 en octets.
  • record_application_tags: définissez la valeur sur true si vous souhaitez enregistrer les balises d'application à partir de la requête.
  • record_client_address: définissez la valeur sur true si vous souhaitez enregistrer l'adresse IP du client.
  • query_plans_per_minute: la valeur par défaut est 5, et vous pouvez la configurer sur une valeur comprise entre 5 et 20.

Exemple :

Pour appliquer votre configuration Terraform dans un projet Google Cloud , suivez les procédures des sections suivantes.

Préparer Cloud Shell

  1. Lancez Cloud Shell.
  2. Définissez le projet Google Cloud par défaut dans lequel vous souhaitez appliquer vos configurations Terraform.

    Vous n'avez besoin d'exécuter cette commande qu'une seule fois par projet et vous pouvez l'exécuter dans n'importe quel répertoire.

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    Les variables d'environnement sont remplacées si vous définissez des valeurs explicites dans le fichier de configuration Terraform.

Préparer le répertoire

Chaque fichier de configuration Terraform doit avoir son propre répertoire (également appelé module racine).

  1. Dans Cloud Shell, créez un répertoire et un nouveau fichier dans ce répertoire. Le nom du fichier doit comporter l'extension .tf, par exemple main.tf. Dans ce tutoriel, le fichier est appelé main.tf.
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. Si vous suivez un tutoriel, vous pouvez copier l'exemple de code dans chaque section ou étape.

    Copiez l'exemple de code dans le fichier main.tf que vous venez de créer.

    Vous pouvez également copier le code depuis GitHub. Cela est recommandé lorsque l'extrait Terraform fait partie d'une solution de bout en bout.

  3. Examinez et modifiez les exemples de paramètres à appliquer à votre environnement.
  4. Enregistrez les modifications.
  5. Initialisez Terraform. Cette opération n'est à effectuer qu'une seule fois par répertoire.
    terraform init

    Vous pouvez également utiliser la dernière version du fournisseur Google en incluant l'option -upgrade :

    terraform init -upgrade

Appliquer les modifications

  1. Examinez la configuration et vérifiez que les ressources que Terraform va créer ou mettre à jour correspondent à vos attentes :
    terraform plan

    Corrigez les modifications de la configuration si nécessaire.

  2. Appliquez la configuration Terraform en exécutant la commande suivante et en saisissant yes lorsque vous y êtes invité :
    terraform apply

    Attendez que Terraform affiche le message "Apply completed!" (Application terminée).

  3. Ouvrez votre projet pour afficher les résultats. Dans la console Google Cloud , accédez à vos ressources dans l'interface utilisateur pour vous assurer que Terraform les a créées ou mises à jour.

Les métriques devraient être disponibles dans les insights sur les requêtes quelques minutes après la fin de la requête.

Activer les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus

Vous ne pouvez activer les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus sur votre instance Cloud SQL qu'à l'aide de la console Google Cloud .

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Modifier.
  4. Dans la section Stockage, vérifiez que la case Activer l'augmentation automatique de l'espace de stockage est cochée.
  5. Dans la section Personnaliser votre instance, développez Insights sur les requêtes.
  6. Cochez la case Activer les fonctionnalités Enterprise Plus.
  7. Après avoir activé les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus, vous pouvez modifier les champs suivants:

    • Personnaliser la longueur des requêtes: spécifiez la limite, en octets, de la longueur des requêtes. Vous pouvez spécifier un nombre compris entre 256 et 20480. Toute chaîne de requête qui dépasse la limite spécifiée est tronquée à l'écran. Une limite de longueur de requête plus élevée nécessite davantage de mémoire. La valeur par défaut est 10240 octets (10 ko).

  8. Cliquez sur Enregistrer.

Afficher le tableau de bord d'Insights sur les requêtes

Le tableau de bord d'Insights sur les requêtes affiche la charge de la requête en fonction des facteurs que vous sélectionnez. La charge de la requête correspond au calcul du travail total pour toutes les requêtes de l'instance au cours de la période sélectionnée. Le tableau de bord fournit une série de filtres qui vous aident à afficher la charge des requêtes.

Pour ouvrir le tableau de bord d'Insights sur les requêtes, procédez comme suit :

  1. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  2. Sélectionnez l'onglet Insights sur les requêtes dans le panneau de navigation de gauche ou cliquez sur le lien Accéder à Query Insights pour obtenir des informations plus détaillées sur les requêtes et les performances.

Le tableau de bord d'Insights sur les requêtes s'ouvre. Il affiche les informations suivantes concernant votre instance:

Affiche le tableau de bord Insights sur les requêtes, avec des menus déroulants pour les bases de données. À droite des menus déroulants, vous trouverez un filtre permettant de définir une période.

  • Bases de données: permet de filtrer la charge des requêtes sur une base de données spécifique ou sur toutes les bases de données.
  • Période: permet de filtrer la charge des requêtes par période, par exemple par heure, par jour, par semaine, par 30 jours ou selon une plage personnalisée.
  • Graphique de la charge de la base de données: affiche le graphique de la charge des requêtes en fonction des données filtrées.
  • Requêtes et Bases de données: permet de filtrer la charge des requêtes en fonction d'une requête ou d'une base de données sélectionnées. Consultez la section Filtrer la charge de la base de données.

Afficher la charge de la base de données pour toutes les requêtes

La charge de la requête de la base de données est une mesure du travail (en secondes du processeur) ayant exécuté les requêtes de la base de données sélectionnée au fil du temps. Chaque requête en cours d'exécution utilise ou attend des ressources du processeur, des ressources d'E/S ou des ressources de verrouillage. La charge des requêtes de la base de données correspond au ratio du temps pris par toutes les requêtes effectuées sur une période donnée par rapport à la durée d'exécution.

Le tableau de bord d'Insights sur les requêtes de premier niveau affiche le graphique Charge de la base de données par temps d'exécution. Les menus déroulants du tableau de bord vous permettent de filtrer le graphique pour toutes les bases de données ou une base de données spécifique.

Affiche toutes les requêtes exécutées pour une base de données choisie.

Les lignes colorées du graphique indiquent la charge de la base de données par temps d'exécution. Examinez le graphique et utilisez les options de filtrage pour explorer les questions suivantes :

  • La charge de la requête est-elle élevée ? Le graphique a-t-il connu un pic ou augmenté au fil du temps ? Si la charge n'est pas élevée, le problème ne vient pas de votre requête.
  • Depuis combien de temps la charge est-elle élevée ? Est-elle élevée seulement maintenant ou depuis longtemps ? Utilisez le sélecteur de plage pour sélectionner différentes périodes afin de déterminer la durée du problème. Faites un zoom avant pour afficher une période dans laquelle des pics de la charge de requête ont été observés. Effectuez un zoom arrière pour afficher jusqu'à une semaine de la chronologie.
  • Quelle base de données subit la charge ? Sélectionnez différentes bases de données dans le menu déroulant "Bases de données" pour trouver celles qui présentent les charges les plus élevées.

Filtrer la charge de la base de données

Vous pouvez filtrer la charge de la base de données par requêtes. Si vous utilisez Insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus, vous pouvez personnaliser le graphique de charge de la base de données pour ventiler les données affichées à l'aide de l'une des dimensions suivantes:

  • Toutes les requêtes

  • Bases de données

Pour personnaliser le graphique de charge de la base de données, sélectionnez une dimension dans le menu déroulant Charge de la base de données par temps d'exécution.

Afficher les principaux contributeurs à la charge de la base de données

Pour afficher les principales dimensions contribuant à la charge de la base de données, vous pouvez utiliser le tableau Principales dimensions par charge de la base de données. Le tableau Principales dimensions par charge de la base de données affiche les principaux contributeurs pour la période et la dimension que vous sélectionnez dans le menu déroulant du graphique Charge de la base de données par temps d'exécution. Vous pouvez modifier la période ou la dimension pour afficher les principaux contributeurs pour une autre période ou dimension.

Dans le tableau Principales dimensions par chargement de données, vous pouvez sélectionner les onglets suivants.

Tabulation Description
Requêtes Le tableau affiche les principales requêtes normalisées par temps d'exécution total. Pour chaque requête, les données affichées dans les colonnes sont listées comme suit :
  • Temps d'exécution moyen (ms): temps moyen d'exécution de la requête.
  • Temps d'exécution total (ms): temps d'exécution total de la requête spécifique.
  • Lignes renvoyées en moyenne: nombre moyen de lignes récupérées pour la requête.
  • Heures d'appel: nombre de fois que la requête a été appelée par l'application.
Bases de données Le tableau présente la liste des principales bases de données ayant contribué à la charge au cours de la période choisie pour toutes les requêtes exécutées.
  • Temps moyen passé dans la base de données (ms): temps moyen passé par les requêtes dans la base de données spécifique.
  • Temps total passé dans la base de données (ms): temps d'exécution total des requêtes dans la base de données spécifique.

Filtrer par requêtes

Le tableau Requêtes fournit un aperçu des requêtes qui provoquent les charges de requête les plus élevées. Le tableau affiche toutes les requêtes normalisées pour la période et les options sélectionnées dans le tableau de bord d'Insights sur les requêtes. Il trie les requêtes par durée d'exécution totale au cours de la période sélectionnée.

Pour trier le tableau, sélectionnez un en-tête de colonne. Le tableau présente les propriétés suivantes:

  • Requête: chaîne de requête normalisée. Par défaut, Insights sur les requêtes n'affiche que 1 024 caractères dans la chaîne de requête.
  • Database (Base de données) : base de données sur laquelle la requête a été exécutée.
  • Temps d'exécution moyen (ms) : temps moyen d'exécution de la requête.
  • Temps d'exécution total (ms): temps total d'exécution de la requête.
  • Heures d'appel: nombre de fois que l'application a appelé la requête.
  • Lignes renvoyées en moyenne: nombre moyen de lignes renvoyées pour la requête.

Insights sur les requêtes stocke et affiche uniquement les requêtes normalisées.

Désactiver les insights sur les requêtes

Console

Pour désactiver Insights sur les requêtes pour une instance Cloud SQL à l'aide de la console Google Cloud , procédez comme suit:

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Dans la tuile Configuration, cliquez sur Modifier la configuration.
  4. Dans la section Options de configuration, développez Insights sur les requêtes.
  5. Décochez la case Activer Insights sur les requêtes.
  6. Cliquez sur Save (Enregistrer).

gcloud

Pour désactiver Insights sur les requêtes pour une instance Cloud SQL à l'aide de gcloud, exécutez gcloud sql instances patch avec l'option --no-insights-config-query-insights-enabled comme indiqué ci-dessous, après avoir remplacé INSTANCE_ID par l'ID de l'instance.

gcloud sql instances patch INSTANCE_ID 
--no-insights-config-query-insights-enabled

REST

Pour désactiver Insights sur les requêtes pour une instance Cloud SQL à l'aide de l'API REST, appelez la méthode instances.patch avec queryInsightsEnabled défini sur false comme suit.

Avant d'utiliser les données de requête ci-dessous, effectuez les remplacements suivants :

  • project-id : ID du projet
  • instance-id : ID de l'instance.

Méthode HTTP et URL :

PATCH https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id

Corps JSON de la requête :

{
  "settings" : { "insightsConfig" : { "queryInsightsEnabled" : false } }
}

Pour envoyer votre requête, développez l'une des options suivantes :

Vous devriez recevoir une réponse JSON de ce type :

{
  "kind": "sql#operation",
  "targetLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/instances/instance-id",
  "status": "PENDING",
  "user": "user@example.com",
  "insertTime": "2021-01-28T22:43:40.009Z",
  "operationType": "UPDATE",
  "name": "operation-id",
  "targetId": "instance-id",
  "selfLink": "https://sqladmin.googleapis.com/sql/v1beta4/projects/project-id/operations/operation-id",
  "targetProject": "project-id"
}

Désactiver les insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus

Pour désactiver Insights sur les requêtes pour l'édition Cloud SQL Enterprise Plus, procédez comme suit:

  1. Dans la console Google Cloud , accédez à la page Instances Cloud SQL.

    Accéder à la page Instances Cloud SQL

  2. Pour ouvrir la page Présentation d'une instance, cliquez sur son nom.
  3. Cliquez sur Modifier.
  4. Dans la section Personnaliser votre instance, développez Insights sur les requêtes.
  5. Décochez la case Activer les fonctionnalités Enterprise Plus.
  6. Cliquez sur Enregistrer.

Étape suivante