Moteurs SQL : CQE/SQE en mode batch et intéractif

RPG (3 et 4, free), CL, SQL, etc...
Répondre
claude.mahe
Messages : 44
Enregistré le : ven. 22 juin 2007, 17:11:26
Localisation : SAINT BRIEUC( 22002)
Contact :

Moteurs SQL : CQE/SQE en mode batch et intéractif

Message par claude.mahe »

Bonjour,
Sur une machine en V5R4, nous venons de nous apercevoir qu'une requête SQL, un peu complexe, utilise le moteur SQE en intéractif mais CQE en batch !
Du coup, cette requête qui ne prend que quelques secondes en intéractif dure plus de 10 mn en batch (pour cause de création d'un index temporaire).
On pourrait effectivement créer l'index, mais y-a-t'il une explication à ce mode de fonctionnement ?

PS : a priori d'autres ont rencontrés le même problème en V5R4 également http://www.developpez.net/forums/d96660 ... e-sql-db2/

x.deseille
Messages : 15
Enregistré le : ven. 22 juin 2007, 17:15:04
Localisation : ANCENIS CEDEX( 44158)
Contact :

Sqe

Message par x.deseille »

Bonjour,

Je pense qu'il faut vérifier du coté des paramètres du sbmjob,
particulièrement le code CCSID. Le choix du moteur est sensible aux translations.

Si tous les paramètres (intéractifs et batch) sont rigoureusement identiques et que les dta le sont également, c'est effectivement très étrange. Il est vrai que les couloirs de l'optimiseur de requetes en V5R4 sont impénétrables. L'optimiseur choisi sont chemin en fonction d'éléments "variables" comme la charge Cpu ou la taille des données, mais de là à choisir l'ancien moteur, vivement la V6 !!!!

Si vous ne trouvez pas, la seule solution sera malheureusement de revoir le code SQL avec les recommandations IBM pour Sqe.

Autre point, la création d'un index d'optimisation est parfois inopérente si le moteur Cqe est utilisé.

Xavier Deseille

claude.mahe
Messages : 44
Enregistré le : ven. 22 juin 2007, 17:11:26
Localisation : SAINT BRIEUC( 22002)
Contact :

Re: Sqe

Message par claude.mahe »

x.deseille a écrit : .../...
Je pense qu'il faut vérifier du coté des paramètres du sbmjob,
.../...
Merci pour cette réponse qui nous a mis sur la voie : en fait, le pgm soumis effectue un CPYF de la vue SQL et chose curieuse (?) quand on passe par le CPYF, c'est le moteur CQE qui est utilisé !
Nous avons donc remplacé le CPYF par un CREATE TABLE XXX AS (SELECT * FROM LAVUE) WITH DATA et ça roule avec SQE !

x.deseille
Messages : 15
Enregistré le : ven. 22 juin 2007, 17:15:04
Localisation : ANCENIS CEDEX( 44158)
Contact :

(sans texte)

Message par x.deseille »

Le cpyf a probablement modifié les CCSID de quelques champs.
Un dspffd devrait vous le prouver.

Bonne continuation.

Fabrice
Messages : 93
Enregistré le : lun. 09 févr. 2009, 09:19:42

(sans texte)

Message par Fabrice »

Bonjour,

A mon avis, le CCSID n'est pas à l'origine de ce "problème" car ce n'est pas un problème, c'est juste un fonctionnement tout à fait normal de l'optimiseur de requête DB2 du système.

Je m'explique, depuis la V5R2, les moteurs CQE (Classic Query Engine) et SQE (SQL Query Engine) cohabitent, et suivant l'origine de la requête, l'optimiseur de requête, nommé Query Dispatcher, va router une requête soit vers le moteur CQE, soit vers le moteur SQE.

Image
http://img845.imageshack.us/i/63850705.jpg/

A chaque release de l'Operating System, IBM migre de plus en plus de types de requêtes vers le moteur SQE, mais en V5R4 il reste encore plusieurs, qui nativement tournent en CQE, et c'est le cas du CPYF.

Image
http://img88.imageshack.us/i/99775922.jpg


http://publib.boulder.ibm.com/infocente ... timize.htm
Query Engine Overview

DB2® UDB for iSeries® provides two query engines to process queries: the Classic Query Engine (CQE) and the SQL Query Engine (SQE).


The CQE processes queries originating from non-SQL interfaces: OPNQRYF, Query/400, and QQQQry API. SQL based interfaces, such as ODBC, JDBC, CLI, Query Manager, Net.Data®, RUNSQLSTM, and embedded or interactive SQL, run through the SQE. For ease of use, the routing decision for processing the query by either CQE or SQE is pervasive and under the control of the system. The requesting user or application program cannot control or influence this behavior. However, a better understanding of the engines and of the process that determines which path a query takes can lead you to a better understand of your query's performance.

Along with the new query engine, several more components were created and other existing components were updated. Additionally, new data access methods were created for SQE.
http://publib.boulder.ibm.com/infocente ... sqecqe.htm

PS : j'ai ajouté des images pour illustrer ces propos, mais elles ne semblent pas s'afficher sur ce forum. J'ai donc également mis les liens directs pour les voir sans passer par le forum.

Répondre