Instructions DDL SQL affectant les objets de base de données référencés par les instructions SQL exécutées en mode statique

Les instructions DDL SQL peuvent causer des problèmes pour les instructions Data Manipulation Language (DML) exécutées en mode statique si les instructions DDL créent, déplacent ou modifient les objets DBMS référencés par les instructions DML. Les problèmes peuvent survenir même si les instructions DDL sont exécutées une seule fois après la définition des accès des instructions DDL et DML.

Les instructions SQL exécutées invalident les plans d'accès des instructions DML SQL qui référencent les objets créés, modifiés ou déplacés par les instructions SQL. Les instructions DML peuvent toujours être exécutées même si leurs plans d'accès sont invalidés. L'exécution des instructions DML ne génère aucun message d'avertissement/d'erreur.

L'invalidation des plans d'accès peut avoir deux conséquences :

Dans les deux cas, votre application non-pureQuery perd deux des principaux avantages des instructions SQL : les chemins d'accès inchangés et les gains de performances possibles.

IBM® recommande que les applications que vous utilisez avec optimisation client n'exécutent pas d'instructions DDL.

Si votre application utilise des instructions DDL dont les accès sont définis et que la valeur executionMode est STATIC, pureQuery exécute les instructions DDL.

En outre, si votre application utilise des instructions DDL dont les accès ne sont pas définis, la valeur executionMode est STATIC et la valeur allowDynamicSQL est TRUE, pureQuery exécute les instructions DDL. Toutefois, si votre application utilise des instructions DDL dont les accès ne sont pas définis, la valeur executionMode est STATIC etla valeur allowDynamicSQL est FALSE, pureQuery exécute les instructions DDL et émet une exception "Static statement not found".


Commentaires