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 l'enregistrement des instructions SQL, cliquez sur le bouton Créer une charge de travail de requête à partir de toutes les instructions.
    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 Gérer les charges de travail, sélectionnez la charge de travail de requête et sélectionnez Expliciter la charge de travail sélectionnée dans la zone 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 l'enregistrement des instructions SQL, cliquez sur le bouton Créer une charge de travail de requête à partir de toutes les instructions.
    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 Gérer les charges de travail, sélectionnez la charge de travail de requête et sélectionnez Expliciter la charge de travail sélectionnée dans la zone 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 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 Sélectionner pour comparer avec une autre charge de travail ou image instantanée, sélectionnez l'option 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 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èmes de performances, sélectionnez Créer une nouvelle charge de travail de requête pour l'optimisation dans la zone Plus d'actions de la page 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 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 Afficher les détails situé en haut de la liste.
    3. En haut de la page Afficher les résultats de la comparaison par plan d'accès d'instruction SQL, cliquez sur le bouton Créer une suggestion d'optimisation ou le bouton 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.

Feedback