|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
Bonjour,
aujourd'hui un programme PL1 attaque directement une table DB2 en select * puis selection des colonnes via le programme PL1 : Code :
Le souci c'est le format du fichier d'unload : 1) Si on change de version DB2, le fichier est susceptible de changer de format et donc de faire planter le programme... ? 2) Si je passe par un unload à partir d'une FIC, le fichier d'unload est-il identique au fichier d'unload à partir de la table directement. 3) Si je décide de faire un unload en passant par un select avec une clause WHERE, le fichier d'unload serat'il identique à un fichier d'unload sans select ? 4) Et quel est le plus optimal, faire un unload pus et simple de toute une table (plus de 500 Millions de lignes) ou faire un unlaod par sql avec une clause WHERE qui elle ramènerait 400 Millions de Lignes (les lignes dont on a besoin) Je sais, ça fait pas mal de question mais je préfère prendre ds précaustions avant de me lancer dans cette optimisation. Merci pour votre aide. |
||
|
|
00
|
|
|
#2 | ||||
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
Citation:
Citation:
Citation:
Citation:
|
||||
|
|
00
|
|
|
#3 | ||||
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
Bonjour Luc Orient,
j'ai fais le test UNLOAD à partir d'une FIC, le contenu à une donnée bizarre en début de ligne Code :
Code :
|
||||
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
|
|
|
00
|
|
|
#5 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : octobre 2006 Messages : 503 ![]() |
attention, DSNTIAUL n'est pas UNLOAD.
UNLOAD utilitaire DSNTIAUL programme classique Le format de fichier produit par DSNTIAUL n'est pas identique à UNLOAD. Pour commencer, le RECFM peut être différent, UNLOAD c'est VB, dsntiaul c'est selon. ensuite, si tu as des colonnes avec NULL possible, tu as des différences. Lit et relit la doc Utility Guide and Reference les 2c ajoutés par UNLOAD donnent l'OBID de la table. |
|
|
00
|
|
|
#6 | ||
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
oui
Code :
|
||
|
|
00
|
|
|
#7 | |||||||
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
Citation:
Avec le programme suivant : Code :
Code :
L'avantage que je vois avec la deuxième solution, c'est que je peux sélectionner des conditions (clause Where) avec le langage SQL... Il y en a un troisième qui fonctionne aussi bien : Code :
|
|||||||
|
|
00
|
|
|
#8 |
|
Membre chevronné
![]() Administrateur de base de données Inscription : octobre 2006 Messages : 503 ![]() |
|
|
|
00
|
|
|
#9 | |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
Citation:
Un programme PL/1 ( du PL/1 quelle drôle d'idée ... ) devrait être capable de lire un tel fichier ... |
|
|
|
00
|
|
|
#10 | ||
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
Par curiosité, pourquoi cette remarque, ça m'intéresse.
Toutes les critiques sont les bienvenues Quoiqu'il en soit, je pense avoir trouver l'unload que je veux : Code :
|
||
|
|
00
|
|
|
#11 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
|
|
|
00
|
|
|
#12 |
|
Membre actif
![]() Inscription : juin 2008 Messages : 146 ![]() |
Bonjour,
J'arrive après la bataille juste pour dire que : 1/ L'utilitaire UNLOAD est plus performant que le programme DSNTIAUL et surtout il est pérenne, alors que DSNTIAUL est gracieusement fourni par IBM depuis toujours mais sans certitude pour les futures versions. Pour info, lorsque l'utilitaire UNLOAD est apparu en V7 ou V8, je ne sais plus trop, nous avons modifié tous nos PCL et JCL qui contenait un DSNTIAUL pour le remplacer par UNLOAD. Le gain est d'en moyenne 20 à 30% si je me souviens bien. 2/ Récupérer 500 M de lignes sans se poser de question ou n'en sélectionner "que" 400 M avec une clause WHERE, ça ne changera pas grand chose en terme de temps de réponse, puisqu'on peut logiquement penser que DB2 va scanner toute la table. Ceci dit, tu gagneras quand même 100 M d'écritures fichier, ce qui n'est pas négligeable quand on atteint de tels chiffres. La question que je me poserais, c'est plutôt : quel traitement peut avoir besoin d'une mise à plat de 400 millions de lignes. S'il s'agit d'un processus de reprise, de migration, ..., OK, s'il s'agit d'un traitement périodique, je doute un peu du bien fondé de l'analyse. Mais chaque société a ses spécificités et ses propres méthodes de travail, je ne porterai donc pas de jugement. Comme dirait l'autre : chacun porte se croix... |
|
|
00
|
|
|
#13 |
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
Bonjour pdz74 et merci pour ta réponse qui est très précise. C'est exactement ce que je voulais savoir.
J'utiliserais donc l'utilitaire UNLOAD. Au niveau fonctionnel, je dois t'avouer que je ne comprends pas bien pourquoi on doit balayer une table de 500 M de lignes. C'est un programme qui existe de puis très longtemps, il est donc possible que la table à l'époque était petite... et qu'elle ne cesse de grandir... Mais je n'en suis pas certain... |
|
|
00
|
|
|
#14 |
|
Membre confirmé
![]() Inscription : mars 2004 Messages : 1 187 ![]() |
|
|
|
00
|
|
|
#15 |
|
Membre Expert
![]() ![]() François DurandSpécialiste Delivery Mainframe IBM Inscription : octobre 2005 Messages : 1 096 ![]() |
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com