Comparaison de plans d'accès à l'aide d'images instantanées d'informations EXPLAIN suite à l'exécution de l'utilitaire RUNSTATS

Vous pouvez exécuter l'utilitaire RUNSTATS pour collecter les statistiques en cours sur les tables et index. L'exécution de cet utilitaire fournit à l'optimiseur les informations les plus à jour avec lesquelles générer le meilleur plan d'accès.

Avant de commencer

Vérifiez que les conditions requises sont respectées.

Pourquoi et quand exécuter cette tâche

Lors de cette procédure, avant d'exécuter l'utilitaire RUNSTATS, vous créez et explicitez une charge de travail de requête contenant les instructions SQL présentes dans votre application. Ensuite, vous exécutez RUNSTATS. Enfin, vous créez et explicitez un autre charge de travail de requête contenant les instructions SQL présentes dans votre application, puis vous comparez l'image instantanée d'EXPLAIN pour la première charge de travail de requête avec l'image instantanée d'EXPLAIN pour la seconde charge de travail de requête.

Même si cette procédure utilise deux charges de travail de requête distinctes, vous pouvez créer une seule charge de travail de requête, l'expliciter, exécuter RUNSTATS, puis expliciter de nouveau la charge de travail de requête. Vous pouvez ensuite comparer les deux images instantanées d'EXPLAIN.

Procédure

Pour comparer des plans d'accès à l'aide d'images instantanées d'informations EXPLAIN suite à l'exécution de l'utilitaire RUNSTATS :

  1. Créez une charge de travail de requête des instructions SQL présentes dans votre application.
    1. Capturez les instructions SQL.
    2. Après avoir capturé des instructions SQL, cliquez sur le bouton Tout sauvegarder dans une charge de travail.
    3. Dans la fenêtre Entrer le nom et la description de la charge de travail, spécifiez des informations pour identifier la nouvelle charge de travail de requête.
    La page Gérer et optimiser les charges de travail de la section Gérer s'ouvre. La nouvelle charge de travail de requête s'affiche dans la table sur cette page. Le statut de la charge de travail de requête est CAPTURED.
  2. Explicitez la charge de travail de requête.
    Remarque : Si vous avez capturé des instructions SQL depuis les sources suivantes et que vous avez choisi d'enregistrer des informations EXPLAIN lors de la création de la charge de travail de requête, vous n'avez pas besoin d'expliciter cette dernière.
    • DB2 for Linux, UNIX, and Windows : moniteurs d'événements ACTIVITIES, tables EXPLAIN, modules, mémoire cache de package
    • DB2 for z/OS : modules et plans de catalogue, cache d'instruction dynamique
    1. Sur la page Manage Workloads (Gérer les charges de travail), sélectionnez la charge de travail de requête et sélectionnez Explain Selected Workload (Expliciter la charge de travail sélectionnée) dans la zone More actions (Plus d'actions).
    2. Dans la fenêtre Collecter des informations EXPLAIN, indiquez des valeurs facultatives pour l'environnement d'exécution des instructions SQL de la charge de travail de requête.
  3. Exécutez les instructions de contrôle RUNSTATS pour collecter et mettre à jour les statistiques pour l'objet de base de données. Une fois que vous avez terminé, si les instructions sont statiques, redéfinissez les liaisons des modules à l'aide de l'option EXPLAIN définie sur YES et de l'option ACTION définie sur REPLACE.
  4. Créez une autre charge de travail de requête des instructions SQL présentes dans votre application.
    1. Capturez les instructions SQL.
    2. Après avoir capturé des instructions SQL, cliquez sur le bouton Tout sauvegarder dans une charge de travail.
    3. Dans la fenêtre Entrer le nom et la description de la charge de travail, spécifiez des informations pour identifier la nouvelle charge de travail de requête.
  5. Explicitez la charge de travail de requête.
    Remarque : Si vous avez capturé des instructions SQL depuis les sources suivantes et que vous avez choisi d'enregistrer des informations EXPLAIN lors de la création de la charge de travail de requête, vous n'avez pas besoin d'expliciter cette dernière.
    • DB2 for Linux, UNIX, and Windows : moniteurs d'événements ACTIVITIES, tables EXPLAIN, modules, mémoire cache de package
    • DB2 for z/OS : modules et plans de catalogue, cache d'instruction dynamique
    1. Sur la page Manage Workloads (Gérer les charges de travail), sélectionnez la charge de travail de requête et sélectionnez Explain Selected Workload (Expliciter la charge de travail sélectionnée) dans la zone More actions (Plus d'actions).
    2. Dans la fenêtre Collecter des informations EXPLAIN, indiquez des valeurs facultatives pour l'environnement d'exécution des instructions SQL de la charge de travail de requête.
  6. Comparez les deux charges de travail de requête.
    1. Cliquez sur l'onglet Gérer situé à gauche de l'assistant de flux de travail.
    2. Sur la page Manage Workloads (Gérer les charges de travail), sélectionnez la charge de travail de requête que vous avez explicitée lors de l'étape 2. Ensuite, cliquez sur le bouton Comparer.
    3. Dans la fenêtre Select to compare with another workload or snapshot (Sélectionner pour comparer avec une autre charge de travail ou image instantanée), sélectionnez l'option Compare the access plans for the selected workload with the access plans for another workload (Comparer les plans d'accès pour la charge de travail sélectionnée avec les plans d'accès pour une autre charge de travail) et cliquez sur OK.
    4. Suivez les étapes de l'assistant Compare Access Plans with Access Plans in Another Workload (Comparer les plans d'accès avec des plans d'accès d'une autre charge de travail).
    5. Une fois la comparaison terminée, recherchez des changements effectués au niveau des plans d'accès et des coûts estimés. Si aucun changement ne nécessite une intervention, la comparaison est terminée. Toutefois, si des changements nécessitent une intervention de votre part, procédez comme suit.
  7. Si vous souhaitez créer et optimiser une charge de travail de requête contenant les instructions SQL avec des problème de performance, sélectionnez Create a new query workload for tuning (Créer une nouvelle charge de travail de requête pour l'optimisation) dans la zone More actions (Plus d'actions) de la page View Comparison Results by Workload EXPLAIN Snapshots and SQL Statements (Afficher les résultats de la comparaison par instantanés d'image d'EXPLAIN de charge de travail et instructions SQL) de la section Comparer. L'assistant Generate New Query Workload (Générer une nouvelle charge de travail de requête) s'ouvre. Dans cet assistant, vous pouvez définir des critères afin d'inclure des instructions SQL dans la charge de travail de requête. Une fois la charge de travail de requête créée, vous pouvez vous reporter à ces étapes générales pour l'optimiser.
  8. Si vous souhaitez créer des suggestions d'optimisation ou des profils d'optimisation pour une ou plusieurs instructions problématiques, suivez l'une des ces étapes :
    1. Sélectionnez une instruction dans la liste des instructions pour lesquelles vous comparez les plans d'accès.
    2. Cliquez sur le bouton View Detail (Afficher les détails) situé en haut de la liste.
    3. En haut de la page View Comparison Results by SQL Statement Access Plan (Afficher les résultats de la comparaison par plan d'accès d'instruction SQL), cliquez sur le bouton Create an optimization hint (Créer une suggestion d'optimisation) ou le bouton Create an optimization profile (Créer un profil d'optimisation). Le bouton qui apparaît dépend de la connexion de base de données avec laquelle vous travaillez.
  9. Si les instructions SQL sont statiques et que vous avez optimisé une charge de travail de requête des instructions problématiques, ou créé des suggestions ou des profils d'optimisation, redéfinissez les liaisons des modules. Définissez l'option EXPLAIN sur YES, si vous souhaitez utiliser l'image instantanée d'EXPLAIN de durée de liaison lors de comparaisons ultérieures.

Commentaires