IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

z/OS Discussion :

Allocation et petit fichier


Sujet :

z/OS

  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut Allocation et petit fichier
    Bonjour,

    j'aimerais faire de très nombreuses allocations de tout petit fichiers.

    Mon but est de perdre le moins d'espace possible.

    Mon cas concret est le suivant :

    500000 fichiers en VB de 20 lignes avec un LRECL de 7800.

    Si je fais un calcul simple :

    7804 * 20 = 15680 soient 15 Kb.

    Quelle serait l'allocation optimale pour ces fichiers ?

    SPACE=(TRK,(1,0)) ?

    Un piste fait 56kb il me semble... Cela signifie que je suis déjà surdimensioné...

    ou bien dois-je allouer en BLK ?

    Merci d'avance pour votre aide ?

  2. #2
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Une allocation ne fera jamais moins d'une piste, quelque soit la méthode l'allocation.

    Et avec du VB, il faut se méfier. il faut prendre le lrecl_moyen+4 (le +4 c'est pour tenir compte du RDW qui informe le système de la longueur du record ).

  3. #3
    Membre expert
    Avatar de Metalman
    Homme Profil pro
    Enseignant-Chercheur
    Inscrit en
    Juin 2005
    Messages
    1 049
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Enseignant-Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 1 049
    Points : 3 532
    Points
    3 532
    Par défaut
    Je ne suis pas expert du tout, mais, ne serait-ce pas dans ces cas-là que des VSAM/IDCAMS seraient utiles ?
    Un seul gros VSAM est enregistré sur le disque, et de multiples entrées sont effectuées dedans ?

    EDIT : Ou un gros PDS ! Mais ils auront tous le même RECFM et LRECL il me semble...
    --
    Metalman !

    Attendez 5 mins après mes posts... les EDIT vont vite avec moi...
    Les flags de la vie : gcc -W -Wall -Werror -ansi -pedantic mes_sources.c
    gcc -Wall -Wextra -Werror -std=c99 -pedantic mes_sources.c
    (ANSI retire quelques fonctions comme strdup...)
    L'outil de la vie : valgrind --show-reachable=yes --leak-check=full ./mon_programme
    Et s'assurer que la logique est bonne "aussi" !

    Ma page Developpez.net

  4. #4
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    2 remarques
    Une allocation ne fera jamais moins d'une piste, quelque soit la méthode l'allocation.
    sauf allocation de type SPACE=(TRK,(0,..))
    Un seul gros VSAM ... ou PDS
    ou une table db2....

    ++

  5. #5
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    Bonjour bernard59139 et merci pour tes réponses.

    En fait je compte passer par une ACS routine DATACLASS pour que les fichiers aient une taille minimum.

    Dans la dataclass, on met l'espace primaire et secondaire en Kb

    Je pourrais mettre par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    CDS Name  . . . : ACTIVE                                                   
    Data Class Name : DATAF                                                    
                                                                               
    Description : PETITS FICHIERS               
                                                                               
    Recfm  . . . . . . . . . :                                               
    Lrecl  . . . . . . . . . :                                               
    Override Space . . . . . : YES                                              
    Space Avgrec . . . . . . : K                                               
          Avg Value  . . . . :                                            
          Primary  . . . . . : 56000                                            
          Secondary  . . . . :                                      
          Directory  . . . . :                                                 
    Retpd Or Expdt . . . . . :                                                 
    Volume Count . . . . . . : 1                                               
    Add'l Volume Amount  . . :

  6. #6
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    avec 56k, tu alloueras 2 pistes.

    En primary qte, met une valeur <= 55k.

  7. #7
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    j'avoue que j'ai un peu de mal à faire la différence entre les allocations en piste et celles en blocks....

    Voici mon cas concret, j'ai un fichier de VB LRECL=6400 et BLKSIZE=27998 qui contient 36 enregs. Ce qui fait 6404*36 = 230544 bytes. Soient : 230 Kb
    Sachant qu'une piste fait 56kb, il me faut donc 230/56 = 4,1 TRACKS

    (corrigez-moi si mon calcul est faux...)

    Quand on regarde le fichier, il est définit comme tel :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    
    General Data                           Current Allocation                   
      Management class . . : **None**        Allocated blocks  . : 2             
      Storage class  . . . : HRFCDE          Allocated extents . : 1             
      Volume serial . . . : PGFRPC                                             
      Device type . . . . : 3390                                                
     Data class . . . . . : **None**                                            
      Organization  . . . : PS             Current Utilization                  
      Record format . . . : VB              Used blocks . . . . : 1             
      Record length . . . : 6400            Used extents  . . . : 1             
      Block size  . . . . : 27998                                              
      1st extent blocks . : 2                                                  
      Secondary blocks  . : 998            Dates                                
      Data set name type  :                 Creation date . . . : 2011/11/24    
      SMS Compressible. . : NO              Referenced date . . : 2011/11/24    
                                            Expiration date . . : ***None***
    On voit que ce fichier est alloué en block...

    Mais quant je regarde au catalogue, je vois :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    
    Command - Enter "/" to select action                        Tracks %Used   XT 
    ------------------------------------------------------------------------------
             VBGCFR.FGDSTR.FRGRSE.CFD                             1  100     1 
    ***************************** End of Data Set list ***************************
    Ici on voit que seule une piste est utilisée...

    Ma question est quelle est l'allocation optimale pour une tel fichier ?

  8. #8
    Membre chevronné Avatar de bernard59139
    Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2006
    Messages
    950
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Octobre 2006
    Messages : 950
    Points : 2 064
    Points
    2 064
    Par défaut
    Il faut calculer la longueur moyenne des records...

    Et vérifier s'il'y a (ou pas) de compress.

    bon week-end

  9. #9
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    1 907
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 1 907
    Points : 411
    Points
    411
    Par défaut
    pas de compress...

    Longueur moyenne : 6404

  10. #10
    Rédacteur/Modérateur
    Avatar de M.Dlb
    Inscrit en
    Avril 2002
    Messages
    2 464
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 464
    Points : 4 311
    Points
    4 311
    Par défaut
    Si longueur moyenne = longueur maximale, il n'y a pas d'intérêt à utiliser du VB, un FB ferait très bien l'affaire, surtout si tous les records sont "pleins".

    De cette façon, ton calcul plus haut semble être juste, il faudrait bien plus de 4 tracks pour ce fichier, mais 1 seul est alloué par z/OS. Si il n'y a pas de compression, la seule explication que je verrais est que les records ne font pas tous 6400 octets.
    M.Dlb - Modérateur z/OS - Rédacteur et Modérateur Pascal

Discussions similaires

  1. Petit fichier ASPX qui ne fonctionne pas
    Par Claude_Azoulai dans le forum ASP
    Réponses: 2
    Dernier message: 27/10/2007, 11h20
  2. Compression petits fichiers texte
    Par SCalc dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 18/01/2007, 14h29
  3. Petits fichiers XML regroupés dans un seul
    Par Nanji dans le forum Modules
    Réponses: 1
    Dernier message: 22/06/2006, 09h50
  4. Parser un petit fichier texte
    Par viscere dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/04/2006, 09h59
  5. allocation dynamique et fichier binaire
    Par issou dans le forum C
    Réponses: 9
    Dernier message: 16/10/2005, 00h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo