Messages et retour d'infos de l'Optimisateur SQL

BoTTom |    Changer de couleur
 
     Il est toujours possible de connaîtres les décisions du
      DATA-BASE-MANAGER SQL et les RAISONS de ces décisions.
 
     Il suffit d'etre en mode DEBUG  (STRDBG sans paramètres)
 
     SQl va alors loger dans l'historique des informations sous forme
      de messages de type *INFO
 
     Les C.A explorés et les raisons pour lesquelles ils ont étés
      soit retenus soit écartés sont indiquées dans le texte de
      second niveau et plus encore ...
 
     Exemple :
 
       STRDBG
 
       CALL xxxx
 
       DSPJOBLOG
 
 


|    Changer de couleur
                             Historique du travail     
                                                             Système : -------- 
 Travail :   NANTEV01      Utilisateur: xxxxxxxxx     Numéro . . . :   158734 
 
   > call xxxxxxxx
  >> dspjoblog
 
 
 
 
 
 
 
                                      F10
                                       !
                                       !
                                       !
                                       !                                    Fin 
 Appuyez sur ENTREE pour continuer.    !      
                                       v
 F3=Exit   F5=Réafficher    F10=Messages détaillés      F12=Annuler
 F17=Début    F18=Fin                                                        


|    Changer de couleur
Touche AIDE                Affichage de tous les messages    
!                                                            Système : -------- 
!Travail :   NANTEV01      Utilisateur: xxxxxxxxx     Numéro . . . :   158734 
!
!  > call xxxxxxxx
!    L'instruction PREPARE P1 a été exécutée.
!--> Tous les chemins d'accès ont été considérés pour le fichier DOCUMEP1. 
     Tous les chemins d'accès ont été considérés pour le fichier DOCMCLP1.
     Chemin d'accès créé à partir du fichier indexé DOCMCLL1.
     Fichier DOCUMEP1 traité en position de jonction 1.
     Fichier DOCMCLP1 traité en position de jonction 2.
     ODP créé.
     Groupage utilisé pour la requête.
     Le curseur C1 est activé.
     Conversion de données nécessaire pour FETCH ou SELECT imbriquée.
     1 lignes ont été extraites du curseur C1.
     La ligne n'a pas été trouvée.
                                                                    A suivre... 
 Appuyez sur ENTREE pour continuer.           
 
 F3=Exit   F5=Réafficher    F12=Annuler    F17=Début    F18=Fin
                                                                         


|    Changer de couleur
                     Complément d'information sur message          
 
 ID message  . . . . . . :   CPI432C          Gravité  . . . . . . :   00 
 Type de message . . . . :   INFORMATION                                        
 Date d'envoi  . . . . . :   20/03/92         Heure d'envoi  . . . :   14:32:42
 Du programme  . . . . . :   QQQIMPLE         Instruction  . . . . :   0000
 Au programme  . . . . . :   QQQIMPLE         Instruction  . . . . :   0000
 
 Message . . . . :   Tous les chemins d'accès ont été considérés pour le
   fichier DOCUMEP1.
 Cause . . . . . : L'optimiseur de requête OS/400 a considéré tous les chemins
   d'accès créés sur le membre DOCUMEP1 du fichier DOCUMEP1 de la bibliothèque
   GESTDOC.
     Ces chemins sont présentés dans la liste ci-après. Si le fichier DOCUMEP1
   de la bibliothèque GESTDOC est un fichier logique, les chemins d'accès
   indiqués sont créés sur le membre DOCUMEP1 du fichier physique DOCUMEP1 de
   la bibliothèque GESTDOC.
     Chaque nom de chemin d'accès présenté de la liste est associé à un code
   d'erreur indiquant la raison pour laquelle le chemin n'a pas été utilisé. Le
                                                                    A suivre... 
 Appuyez sur ENTREE pour continuer.                
 F3=Exit           F12=Annuler            


|    Changer de couleur
                     Complément d'information sur message          
 
 ID message  . . . . . . :   CPI432C          Gravité  . . . . . . :   00 
 Type de message . . . . :   INFORMATION                                        
 
   code d'erreur 0 signifie que le chemin d'accès a été utilisé pour exécuter
   la requête.
     STAG02/DOCUMEF0  4, STAG37/MULFMT  4, STAG02/DOCUMEL0  0, STAG31/LFDOC1
   5, STAG39/LOG2DOC  5, STAG29/FLOGDOC  5, STAG41/DOCUMEP  5, STAG32/DOCUMEL1
   4, STAG39/LOG1DOC  5.
     Les différents codes d'erreur et leur signification sont les suivants :
     1 - L'état du chemin d'accès était incorrect. Le système l'a invalidé.
     2 - L'état du chemin d'accès était incorrect. L'utilisateur a demandé son
   rétablissement.
     3 - Le chemin d'accès est un chemin temporaire (résidant dans la
   bibliothèque QTEMP) et n'était pas indiqué comme fichier devant faire
   l'objet de la requête.
     4 - Le coût d'utilisation de ce chemin d'accès, déterminé par l'optimiseur
   était supérieur à celui de la méthode d'accès choisie.
                                                                    A suivre... 
 Appuyez sur ENTREE pour continuer.                
 F3=Exit           F12=Annuler            


|    Changer de couleur
                     Complément d'information sur message          
 
 ID message  . . . . . . :   CPI432C          Gravité  . . . . . . :   00 
 Type de message . . . . :   INFORMATION                                        
 
     5 - Les clés du chemin d'accès ne correspondaient pas aux zones indiquées
   pour les critères de tri/groupage.
     6 - Les clés du chemin d'accès ne correspondaient pas aux zones indiquées
   pour les critères de jonction.
     7 - L'utilisation de ce chemin d'accès ne réduisait pas les retards lors
   de la lecture des enregistrements du fichier. Or, l'utilisateur avait
   demandé la réduction des temps de retard.
     8 - Le chemin d'accès ne peut pas être utilisé pour un fichier secondaire
   de la requête de jonction car il contient des critères de sélection/omission
   statiques. Or, le type de jonction de la requête ne permet pas l'utilisation
   des chemins d'accès de ce type pour les fichiers secondaires.
     9 - Le fichier DOCUMEP1 contient une sélection d'ID d'enregistrements. Le
   type de jonction de la requête impose la création d'un chemin d'accès
   temporaire pour traiter la sélection d'ID d'enregistrements.
                                                                    A suivre... 
 Appuyez sur ENTREE pour continuer.                
 F3=Exit           F12=Annuler            


|    Changer de couleur
Touche AIDE                Affichage de tous les messages    
!                                                            Système : -------- 
!Travail :   NANTEV01      Utilisateur: xxxxxxxxx     Numéro . . . :   158734 
!
!  > call xxxxxxxx
!    Longueur d'enreg indiquée différente de celle du fichier.
!    L'instruction PREPARE P1 a été exécutée.
!    Tous les chemins d'accès ont été considérés pour le fichier DOCUMEP1.
!    Tous les chemins d'accès ont été considérés pour le fichier DOCMCLP1.
!    Chemin d'accès créé à partir du fichier indexé DOCMCLL1.
!    Fichier DOCUMEP1 traité en position de jonction 1.
!    Fichier DOCMCLP1 traité en position de jonction 2.
!--> ODP créé. 
     Groupage utilisé pour la requête.
     Le curseur C1 est activé.
     Conversion de données nécessaire pour FETCH ou SELECT imbriquée.
     1 lignes ont été extraites du curseur C1.
     La ligne n'a pas été trouvée.
 Appuyez sur ENTREE pour continuer.           
 
 F3=Exit   F5=Réafficher    F12=Annuler    F17=Début    F18=Fin
                                                                         


|    Changer de couleur
                     Complément d'information sur message          
 
 ID message  . . . . . . :   SQL7912          Gravité  . . . . . . :   00 
 Type de message . . . . :   INFORMATION                                        
 Date d'envoi  . . . . . :   20/03/92         Heure d'envoi  . . . :   14:32:43
 Du programme  . . . . . :   QSQOPEN          Instruction  . . . . :   0000
 Au programme  . . . . . :   QSQROUTE         Instruction  . . . . :   0000
 
 Message . . . . :   ODP créé.
 Cause . . . . . : Un chemin d'ouverture (ODP) a été créé. Aucun ODP
   réutilisable n'a été trouvé. Une telle opération se produit dans les cas
   suivants :
     -- L'instruction est lancée pour la première fois.
     -- La commande RCLRSC (Récupérer les ressources) a été lancée depuis la
   dernière exécution de cette instruction.
     -- La dernière exécution de cette instruction a entraîné la suppression de
   l'ODP.
     -- S'il s'agit d'une instruction OPEN, la dernière fermeture de ce curseur
   a entraîné la suppression de l'ODP.
                                                                    A suivre... 
 Appuyez sur ENTREE pour continuer.                
 F3=Exit           F12=Annuler            


|    Changer de couleur
Touche AIDE                Affichage de tous les messages    
!                                                            Système : -------- 
!Travail :   NANTEV01      Utilisateur: xxxxxxxxx     Numéro . . . :   158734 
!
!  > call xxxxxxxx
!    Longueur d'enreg indiquée différente de celle du fichier.
!    L'instruction PREPARE P1 a été exécutée.
!    Tous les chemins d'accès ont été considérés pour le fichier DOCUMEP1.
!    Tous les chemins d'accès ont été considérés pour le fichier DOCMCLP1.
!    Chemin d'accès créé à partir du fichier indexé DOCMCLL1.
!    Fichier DOCUMEP1 traité en position de jonction 1.
!    Fichier DOCMCLP1 traité en position de jonction 2.
!    ODP créé.
!--> Groupage utilisé pour la requête. 
     Le curseur C1 est activé.
     Conversion de données nécessaire pour FETCH ou SELECT imbriquée.
     1 lignes ont été extraites du curseur C1.
     La ligne n'a pas été trouvée.
 Appuyez sur ENTREE pour continuer.           
 
 F3=Exit   F5=Réafficher    F12=Annuler    F17=Début    F18=Fin
                                                                         


|    Changer de couleur
                     Complément d'information sur message          
 
 ID message  . . . . . . :   SQL7916          Gravité  . . . . . . :   00 
 Type de message . . . . :   INFORMATION                                        
 Date d'envoi  . . . . . :   20/03/92         Heure d'envoi  . . . :   14:32:43
 Du programme  . . . . . :   QSQOPEN          Instruction  . . . . :   0000
 Au programme  . . . . . :   QSQROUTE         Instruction  . . . . :   0000
 
 Message . . . . :   Groupage utilisé pour la requête.
 Cause . . . . . : Un groupage a été utilisé pour la mise en service de cette
   requête. Lors de la première instruction FETCH, SQL extraira un groupe
   d'enregistrements du gestionnaire de la base de données. D'autres
   instructions FETCH doivent être lancées par le programme appelant mais elles
   ne nécessitent pas de demande d'autres enregistrements par SQL. Ces
   instructions sont donc exécutées plus rapidement.
 Que faire . . . : SQL tente d'utiliser le groupage à chaque fois qu'une telle
   opération est possible. Lorsque le curseur ne dispose pas de la fonction de
   mise à jour et que le contrôle de validation n'est pas actif, le groupage
   peut être utilisé.
                                                                         Fin    
 Appuyez sur ENTREE pour continuer.                
 F3=Exit           F12=Annuler            


|    Changer de couleur
 
 Depuis la V3R60 il est possible d'avoir ce type d'analyse en automatique,
 
 # Avec la nouvelle fonction :
 
   STRDBMON = démarre le moniteur de base de données, pour un job ou
               pour tous les jobs de la machine.
 
   ENDDBMON = arrêt du moniteur et écriture de l'analyse dans un fichier
               base de données.
 
   Chaque requête est analysée en détail avec :
 
        - liste des fichiers traités
        - options utilisées (jonction, groupage, ....)
        - liste des indexs examinés (raison du choix ou du refus)
        - nombre d'enregistrements traités
        - consommation CPU, ...
 
 
            (le fichier modèle est QAQQDBMN )
 


|    Changer de couleur
 
 Les enregistrements sont identifiés par un code (QQRID)
 
  1000 informations SQL
 
  3000 séquence d'arrivée
  3001 utilisation d'un index existant
  3002 création d'index
  3003 tri
  3004 utilisation d'un fichier temporaire
  3005 fichier verrouillé
  3006 Chemin d'accès reconstruit
  3007 timeout de l'optimiseur
 
  3008 sous-requête (SELECT dans un WHERE)
  3010 utilisation d'une variable HOST
  3014 informations générales
  3018 STDBMON/ENDDBMON
  3019 détail
 
 
remarquons les zones suivantes (en V4R50) :


|    Changer de couleur
 
 QQRIDX (15,0) nombre d'index créés
 
 QQIDXA        suggestion d'index
 QQIDXD          "          "     détail (liste des clés)
 
 QQC21         méthode de jointure   NL = Nested loop Join
                                     MF =  idem mais avec sélection
                                     HJ = Hash Join
 
 QQC12 (QQRID = 3001)  l'index tient en mémoire
 QQC15 ( "      "   )  type d'index  B = B-arbre
                                     C = Contrainte
                                     E = Evi
                                     X = temporaire
 
 QVC1B (QQRID = 3002)  type d'index créé (B ou E)
 
 
 Pour plus de détail voir SC41-3701-01
                     "DB2 for OS/400 Database Programming" [Appendix D]
 





©AF400