Recherche et correction de changements apportés à des plans d'accès suite à une modification effectuée au niveau des autorisations ou de la structure de la base de données

Les mises à jour d'une structure de base de données (à la suite de la modification d'une table, la création d'un index ou sa suppression) et les modifications des droits utilisateur peuvent modifier le plan d'accès pour les instructions SQL et affecter les performances.

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 de modifier votre structure de base de données ou vos autorisations, vous créez et explicitez une charge de travail de requête contenant les instructions SQL présentes dans votre application. Ensuite, vous modifiez votre structure de base de données ou vos autorisations. Enfin, vous créez et explicitez une 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, modifier votre structure de base de données ou vos autorisations, puis expliciter à nouveau la charge de travail de requête. Vous pouvez ensuite comparer les deux images instantanées d'EXPLAIN.

Procédure

Pour identifier et traiter des changements effectués au niveau des plans d'accès provoqués par des modifications apportées aux autorisations ou à la structure de la base de données :

  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. Modifiez les autorisations ou les objets de base de données dans DB2. 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 vous souhaitez utiliser les ensembles de plans d'accès précédents car ils étaient plus performants, sélectionnez Verrouiller les plans d'accès pour toutes les instructions SQL 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 dans la section Comparer. Renseignez les informations requises dans la fenêtre Générer des scripts pour verrouiller les plans d'accès. Une fois les scripts générés, examinez-les et enregistrez-les. Ensuite, vous pouvez les déployer selon les instructions de votre version précédente de DB2.
  10. Si les instructions SQL sont statiques et que vous avez optimisé une charge de travail de requête des instructions problématiques, créé des suggestions ou des profils d'optimisation, ou verrouillé des plans d'accès, 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