Indique si des informations sur les instructions
SQL doivent être capturées et le type d'information à capturer.
Ces informations sont écrites dans le fichier spécifié par la propriété
pureQueryXml ou à l'emplacement spécifié par la propriété outputPureQueryXml. Si l'emplacement est un référentiel créé dans une base de données, les informations sont écrites dans le groupe d'exécution de référentiel spécifié par la propriété
propertiesGroupId.
Lorsque vous exécutez votre application avec le mode de capture défini sur ON, vous devez exécuter avec succès tous les chemins logiques contenant les instructions SQL que vous souhaitez capturer. pureQuery capture les instructions SQL uniquement lorsqu'elles sont exécutées avec succès.
Lors de la capture d'instructions SQL à partir d'une application qui accède à une base de données
DB2 for z/OS, pureQuery Runtime suit les instructions SQL capables d'effectuer des insertions de plusieurs lignes. Les utilitaires pureQuery
Configure et StaticBinder utilisent les informations lors du traitement des instructions.
Pour les applications Java,
la méthode JDBC setMaxRows contrôle le nombre
maximum de lignes renvoyées par une instruction SQL. pureQuery Runtime capture
la valeur spécifiée par la méthode JDBC setMaxRows lors
de la capture d'informations SQL. L'utilitaire pureQuery StaticBinder utilise
la valeur setMaxRows lors de la création de packages qui
contiennent l'instruction SQL et lors de la liaison des packages. pureQuery Runtime
utilise la valeur setMaxRows pour limiter le nombre de
lignes renvoyées lors de l'exécution statique d'instructions SQL.
Les
instructions SQL peuvent être capturées plusieurs fois avec différentes valeurs
spécifiées par la méthode setMaxRows. pureQuery Runtime
utilise la plus grande valeur spécifiée par la méthode setMaxRows.
Si l'instruction contient également la clause FETCH FIRST, pureQuery Runtime
utilise également la valeur spécifiée par la clause pour déterminer le nombre
maximum de lignes renvoyées.
Remarque : Si la méthode setMaxRows
spécifié la valeur 0, toutes les lignes sont renvoyées.
Si une instruction SQL est exécutée
avec le verrouillage optimiste, elle ne peut pas être exécutée de façon statique.
Par conséquent, pureQuery Runtime ne capture pas des instructions qui sont exécutées
avec le verrouillage optimiste. Les instructions ne sont pas concernées par les options
allowDynamicSQL ou
capturedOnly de pureQuery Runtime.
Le verrouillage optimiste est activé par les méthodes suivantes :
DB2Connection.prepareDB2OptimisticLockingQuery
DB2Statement.executeDB2OptimisticLockingQuery
Cette propriété peut posséder les valeurs suivantes :
- ON
- Indique la capture d'instructions SQL. pureQuery Runtime enregistre
les informations d'exécution SQL lorsque l'application s'exécute.
- OFF
- Valeur par défaut. Indique que les instructions SQL ne doivent pas être capturées lorsque l'application
s'exécute.
- NEW_STMTS
- Indique que seules les nouvelles instructions SQL doivent être capturées. pureQuery
Runtime met également à jour les informations d'exécution SQL pour les instructions
dans le fichier pureQueryXML. Les informations capturées sont enregistrées si elles diffèrent
des informations du fichier pureQueryXML. Les informations
peuvent affecter une future exécution statique des instructions capturées précédemment.
Par exemple, si une instruction SQL est capturée et la même instruction
est capturée à nouveau avec un paramètre SCHEMA différent ou avec un paramètre
de registre spécial différent, pureQuery Runtime met à jour les informations
associées à l'instruction SQL dans le fichier pureQueryXML avec les nouvelles
informations SCHEMA.
Les informations SQL telles que l'heure et le nombre d'exécutions ne sont pas capturées.
Cette valeur est prise en charge uniquement pour les applications Java.
Si vous
indiquez des fichiers d'entrée et de sortie pureQueryXML différents, seules les nouvelles instructions
et informations pouvant affecter l'exécution statique future d'instructions capturées
précédemment sont écrites dans le fichier de sortie.
Si vous définissez la valeur de la propriété
captureMode sur
NEW_STMTS, les valeurs par défaut des propriétés
pureQuery Runtime sont modifiées.
Le tableau suivant répertorie les valeurs par défaut modifiées :
Tableau 1. Valeurs par défaut des propriétés
pureQuery Runtime lorsque la propriété captureMode est définie sur NEW_STMTSPropriété pureQuery Runtime |
Valeur par défaut |
maxNonParmSQL |
100 |
maxStackTracesCaptured |
1 |
stackTraceDepth |
5 |
sqlLiteralSubstitution |
NOT_SET |
Vous pouvez spécifier des valeurs pour les propriétés
pureQuery Runtime afin d'écraser les valeurs par défaut.
- LITE
- Indique qu'une faible quantité d'informations de trace de pile sont capturées dans les instructions SQL. En réduisant la quantité de données capturées, le processus de capture utilise moins de ressources. pureQuery Runtime met à jour le fichier
pureQueryXML pour les instructions SQL nouvelles et capturées précédemment.
Les informations SQL telles que le temps d'exécution et le nombre d'exécutions sont capturées.
Cette valeur est prise en charge uniquement pour les applications Java.
Si vous définissez la valeur de la propriété captureMode sur
LITE,
les valeurs par défaut des propriétés pureQuery Runtime sont modifiées.
Le tableau suivant répertorie les valeurs par défaut modifiées :
Tableau 2. Valeurs par défaut des propriétés pureQuery Runtime lorsque la propriété captureMode est définie sur LITEPropriété pureQuery Runtime |
Valeur par défaut |
maxStackTracesCaptured |
1 |
stackTraceDepth |
5 |
sqlLiteralSubstitution |
NOT_SET |
Vous pouvez spécifier des valeurs pour les propriétés
pureQuery Runtime afin d'écraser les valeurs par défaut.
Notes
d'utilisation de l'interface CLI DB2
et d'IBM Data Server Driver
Lors de l'utilisation de l'interface CLI DB2 ou
d'IBM® Data Server Driver avec
pureQuery Runtime, vous pouvez utiliser la propriété pureQuery Runtime comme mot clé de configuration.
- Syntaxe de mot clé CLI IBM
- captureMode = ON | OFF
- Syntaxe de configuration d'IBM Data Server
Driver
- <parameter name="captureMode" value="ON | OFF" />
- Mot clé de chaîne de connexion équivalent d'IBM
Data Server Provider for .NET
- N/A
Remarques sur l'utilisation
Les informations
suivantes s'appliquent lors de la capture d'informations SQL :
- Les applications CLI
qui sont activées avec l'optimisation client pureQuery prennent en charge
uniquement le mot clé pureQueryXml afin de capturer les
données dans un fichier.
- Pour assurer le bon fonctionnement des applications
Java avec des marqueurs de paramètres nommés, quel que soit le type ou la version du serveur de données, définissez la propriété enableNamedParameterMarkers de Connection ou DataSource sur
DB2BaseDataSource.YES avant d'utiliser les marqueurs de paramètres dans vos applications.
Exemples
Dans cet exemple, une société a capturé précédemment des instructions SQL à partir d'une application activée avec l'optimisation de client pureQuery. Les instructions se trouvent dans un fichier pureQueryXML. La
société a déployé l'application et le fichier pureQueryXML file prod-v1.pdqxml
dans un environnement de production. Elle a procédé au processus de liaison pour que
les instructions SQL s'exécutent de façon statique sur la base de données de production. Cependant,
elle n'est pas sûre que l'ensemble des instructions SQL exécutées par l'application
aient été capturées. Pour capturer uniquement les instructions SQL qui n'ont pas été capturées
précédemment, la société peut définir la valeur de la propriété
captureMode
sur
NEW_STMTS. Les paramètres de propriété suivants configurent
pureQuery Runtime afin de capturer les instructions SQL dans le fichier pureQueryXML
newStmt.pdqxml si l'instruction n'est pas le fichier pureQueryXML prod-v1.pdqxml.
executionMode=STATIC
captureMode=NEW_STMTS
pureQueryXml=prod-v1.pdqxml
outputPureQueryXml=newStmt.pdqxml
Seules les nouvelles instructions sont capturées. Les traces de pile et les statistiques ne sont pas capturées pour les nouvelles instructions. Le processus de capture est un processus moins exigeant en ressources et peut être acceptable dans un environnement de production.
Dans cet exemple, une société souhaite capturer les instructions SQL sans capturer les informations extensives de trace de pile à partir d'une application activée avec l'optimisation de client pureQuery.
Avec les propriétés pureQuery Runtime suivantes, les instructions SQL exécutées par l'application sont capturées dans le fichier
pureQueryXML capture.pdqxml.
Les instructions sont capturées avec des informations d'exécution supplémentaires telles que le temps d'exécution de l'instruction qui peuvent être utilisées pour optimiser l'application.
executionMode=DYNAMIC
captureMode=LITE
pureQueryXml=capture.pdqxml