Analysez la performance de votre code de base de données avec Visual Expert

Visual Expert 2019 introduit un nouvel ensemble de fonctionnalités destiné à analyser et améliorer la performance de votre code de base de données (procédures, fonctions, triggers, requêtes…).

Actuellement ces outils sont disponibles pour :

  1. Les bases de données SQL Server et le code Transact-SQL
  2. Les bases de données Oracle databases et le code PL/SQL
  3. Les projets Visual Expert connectés à votre base de données pour lire le code (par opposition à la lecture directe de fichiers)

Ce guide explique comment configurer votre projet et passer un en revue les performances sous 4 angles:

  1. Identifier les morceaux de code les plus lents de votre application
  2. Analyser les requêtes qui accèdent à une table donnée
  3. Analyser la performance d’un objet particulier
  4. Analyser la performance d’un processus complet

Configuration du projet

  1. Créez un nouveau projet Visual Expert avec du code Oracle ou SQL server
  2. Sélectionnez votre code depuis votre base de données - PAS depuis des fichiers ou dossiers.

visual-expert-source-code-location-oracle-sqlserver-database

Quelle base de données analyserez-vous?

Le choix de la base de données analysée détermine l’emplacement depuis lequel les données seront collectées. Idéallement, vous analyserez une BDD de production. Si vous ne disposez pas des droits d’accès nécessaires, vous pourrez vous connecter à une base de test ou de développement du moment qu’elle est suffisamment utilisée pour générer des statistiques de performance pertinentes.

  • Configurez et testez la connexion de votre base de données.
  • Lancez l'analyse du code.
  • Activez les fonctionnalités liées aux performances du code.

Une fois l'analyse terminée, ouvrez l'onglet "Performance" dans le menu Ruban et cliquez sur "Activer".
collect database performance statistics

[Oracle] Ceci configure Visual Expert pour collecter automatiquement des statistiques de performance à chaque fois qu'une nouvelle analyse de code est lancée.
Après avoir cliqué sur "Activer", Visual Expert vérifiera qu'il peut accéder aux vues et données requises dans votre base de données Oracle. Un message d'erreur s'affiche si un problème est détecté.

[SQL Server]  Ceci lancera automatiquement la génération de statistiques de performance lorsque votre code sera exécuté.

Après avoir cliqué sur "Activer" :

  • Visual Expert vérifiera qu'il dispose des droits nécessaires pour accéder à votre base de données.
  • Il essaiera de créer une session d'événement de performance dans votre base de données SQL Server.
  • Il affichera un message si un problème est détecté.

Veuillez noter que cette fonction n'est disponible que pour:

  • SQL Server 2012 et supérieur
  • Les projets Visual Expert lisant le code de base de données depuis la base mais pas depuis des fichiers.

Vous pouvez également activer/désactiver et voir les détails de la session d'événement de performance en ouvrant la fenêtre "Paramètres de performance".

Define code performance analysis settings

  • [Oracle]
    Rafraîchissez l'analyse de votre code (Ctrl+F5), pour récupérer les statistiques de performance dans votre base de données Oracle.

    [SQL Server]
    A partir de maintenant, chaque fois qu'une nouvelle analyse de code démarre, Visual Expert collecte les dernières statistiques de performance disponibles et les combine avec l'analyse de votre code. Si vous venez d'activer cette fonctionnalité, il se peut que vous ayez besoin d'attendre que suffisamment de code soit exécuté, avant d'obtenir des statistiques pertinentes.

  • Vous pouvez interrompre la collecte des statistiques d'exécution à tout moment:
    suffit d'ouvrir l'onglet performance et de cliquer sur "Désactiver".

Identifier les morceaux de code les plus lents

Temps d'exécution le plus élevé:

Objectif: Identifier les procédures, fonctions ou triggers qui prennent le plus de temps à être exécutés.

  1. Sélectionner la racine des procédures, fonctions ou triggers.
  2. Cliquez sur "Temps d'exécution le plus élevé", dans le bandeau ou dans la barre de navigation.
  3. Les procédures les plus lentes sont listées et triées en fonction de leur temps d'exécution moyen.

Find procedures with highest execution time with Visual Expert

Vous pouvez personnaliser le résultat fourni par cette fonctionnalité avec 2 paramètres (cliquez sur la petite clé à molette pour les configurer):

  • Nombre de procédures affichées dans le résultat (20 par défaut)
  • Temps d'exécution minimum, pour n'afficher que les procédures avec un temps de réponse significatif

Customize Visual Expert execution time results

Temps d'exécution total:

La fonctionnalité précédente (Temps d'exécution le plus élevé) permet d'identifier les fonctions les plus lentes, mais un temps de réponse lent n'est pas nécessairement critique si les fonctions correspondantes sont rarement utilisées.

Pour évaluer correctement la sévérité de ce problème, vous devez tenir compte de la fréquence à laquelle chaque fonction est réellement exécutée:

La fonction "Temps d'exécution total" calcule le temps d'exécution total pour chaque procédure, fonction ou déclencheur, en multipliant le temps d'exécution moyen x le nombre de fois où il est exécuté.

Total Execution time of Database code

Vous pouvez personnaliser le résultat fourni par cette fonctionnalité avec 2 paramètres (cliquez sur la petite clé à molette pour les configurer):

  • Nombre de fonctions affichées dans le résultat (20 par défaut)
  • Temps d'exécution minimum, pour ne visualiser que les fonctions avec un temps de réponse significatif

DB Code Total Execution Time: Customize the results with Parameters

Optimiser le temps d'accès aux données

Vous pouvez passer en revue les requêtes accédant à une table pour identifier les problèmes de performance:

  1. Double-cliquez sur la racine des tables pour les afficher
  2. Sélectionner une table (ou plusieurs tables en appuyant sur la touche[Ctrl])
  3. Cliquez sur "Temps d'exécution de l'instruction SQL", dans le ruban ou la barre de navigation.
  4. Les requêtes les plus lentes sont listées et triées en fonction de leur temps d'exécution moyen

Display SQL Statement Execution Time with Visual Expert

Vous pouvez personnaliser le résultat fourni par cette fonctionnalité avec 2 paramètres (cliquez sur la petite clé à molette pour les configurer):

  • Nombre de fonctions affichées dans le résultat (20 par défaut)
  • Temps d'exécution minimum, pour ne visualiser que les fonctions avec un temps de réponse significatif

Customize the results of SQL Statement Execution time results

Une fois que vous avez identifié une requête lente, vous pouvez trouver la procédure qui l'a générée et en examiner le code source:

  1. Sélectionnez une requête avec un temps de réponse lent.
  2. Cliquez sur "Localiser" dans la barre de navigation
  3. L'emplacement et le code source de la requête sont affichés.
  4. Sélectionnez la procédure contenant la requête pour afficher son code.

Identify Procedures generating slow queries

Analyser la performance d'un objet donné

Pendant que vous naviguez dans votre code, vous pouvez vérifier le temps de réponse d'un objet avec la fonctionnalité "Temps d'Exécution":

Analyze the performance of a given object

Quand vous rencontrez un objet lent, vous pouvez décomposer son temps d'exécution pour identifier les instructions ou les requêtes qui causent le problème.

Sélectionnez simplement cet objet et cliquez sur "Temps d'exécution le plus élevé" ou "Temps d'exécution total":

identify the instructions or queries causing performance issue

Analyser la performance d'un processus complet

Lorsque les utilisateurs signalent un processus lent dans votre application, vous pouvez étudier toute la chaîne d'appels exécutée derrière ce processus.

Temps d'exécution de la hiérarchie d’appels

Cette fonctionnalité génère un arbre d'appels, avec tous les objets exécutés au cours du processus de l'application, et analyse la performance de chaque objet:

  1. Sélectionnez le premier objet exécuté dans le processus.
  2. Cliquez sur "Temps d'exécution de la hiérarchie d’appels", dans le bandeau ou dans la barre de navigation.
  3. La chaîne d'appel est affichée, avec le temps de réponse de chaque objet.

Called Hierarchy Execution Time

Vous pouvez personnaliser le résultat fourni par cette fonctionnalité:

  • Cliquez sur la petite clé à molette
  • Sélectionnez les types d’objet qui seront affichés dans la chaîne d’appels

Customize the results of the called hierarchy execution time

Creusez dans votre code pour identifier les problèmes de performance

Vous pouvez explorer votre code étape par étape, analyser la performance de chaque objet et approfondir votre analyse pour identifier les problèmes clés:

Analyze the time taken by a procedure by viewing the performances