Généralement, lorsque des instructions SQL sont ajoutées, supprimées ou
modifiées dans un programme source, vous devez redéfinir les accès au module
DB2
associé en exécutant la commande BIND avec la sous-option
ACTION(REPLACE). Exécuter cette commande peut changer le plan d'accès pour les instructions SQL et
affecter les performances.
Pourquoi et quand exécuter cette tâche
Au cours de cette procédure, vous créez et explicitez une charge de travail de requête
contenant les instructions SQL d'une application. Ensuite, vous effectuez les
modifications requises au niveau des instructions SQL présentes dans votre application. Puis,
vous créez et explicitez une autre charge de travail de requête contenant les instructions SQL
présentes dans votre application. Enfin, 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.
Une image instantanée d'EXPLAIN dans InfoSphere Optim Query Workload Tuner correspond à un ensemble d'informations EXPLAIN
collectées à un moment donné.
Procédure
Pour identifier et traiter des changements effectués au niveau des plans d'accès provoqués par
l'ajout, la suppression ou la modification d'instructions SQL :
- Créez une charge de travail de requête des instructions SQL présentes dans votre
application.
- Capturez les instructions SQL.
- Après avoir capturé des instructions SQL, cliquez
sur le bouton Tout sauvegarder dans une charge de travail.
- 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.
- 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
- 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).
- 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.
- Ajoutez, supprimez ou modifiez les instructions SQL de votre application. 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.
- Créez une autre charge de travail de requête des instructions SQL présentes dans votre
application.
- Capturez les instructions SQL.
- Après avoir capturé des instructions SQL, cliquez
sur le bouton Tout sauvegarder dans une charge de travail.
- 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.
- 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
- 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).
- 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.
- Comparez les deux charges de travail de requête.
- Cliquez sur l'onglet Gérer situé à gauche
de l'assistant de flux de travail.
- 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.
- 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.
- 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).
- 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.
- 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.
- 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 :
- Sélectionnez une instruction dans la liste des instructions pour lesquelles
vous comparez les plans d'accès.
- Cliquez sur le bouton View Detail (Afficher les détails)
situé en haut de la liste.
- 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.
- 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.