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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 |
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 ) |
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) : |
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] |