Propriété captureMode

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_STMTS
Proprié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 LITE
Proprié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 :

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

Commentaires