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

Administration Oracle Discussion :

Dimension PGA (Burleson Consulting)


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Points : 12
    Points
    12
    Par défaut Dimension PGA (Burleson Consulting)
    Bonjour,
    J'ai consulté récemment sur le site de Burleson Consulting un article sur la dimension de la PGA et je voulais votre avis.

    Voici sa démarche pour un serveur Windows :
    - Dans un premier temps il note la mémoire dont il dispose : 1,25Go
    - Il considère la consommation de l'OS à 20% de la RAM
    - Il récupère deux valeurs : sort_area_size (espace utilisé pour le tri des requêtes) et hash_area_size (espace utilisé pour les jointures de hachage) grâce à la commande suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    SQL> show parameters area_size
     
    NAME                                 TYPE        VALUE
    ------------------------------------ ----------- ---------
    bitmap_merge_area_size               integer     1048576
    create_bitmap_area_size              integer     8388608
    hash_area_size                       integer     1048576
    sort_area_size                       integer     524288
    workarea_size_policy                 string      MANUAL
    - Pour calculer la PGA d'un utilisateur connecté il fait simplement : 1Mo + sort_area + hash_area

    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
     
    column pga_size format 999,999,999
     
    select
        1048576+a.value+b.value   pga_size
    from
       v$parameter a,
       v$parameter b
    where
       a.name = 'sort_area_size'
    and
       b.name = 'hash_area_size'
    ;
     
    PGA_SIZE
    ------------
       2,621,440
    - Pour finir il indique que la taille de la PGA est calculée en multipliant cette valeur par le nombre d'utilisateurs connectés.

    Total RAM on Windows Server = 1250 MB

    Total PGA regions for 100 users = 250 MB
    RAM reserved for Windows (20 %) = 250 MB

    RAM for SGA & buffers = 750 MB
    Je ne sais pas trop quoi en penser, ça vous parle ?

    Merci.

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Bonjour

    On peut disserter longuement sur le baratin de Burleson, mais il sera plus utile de connaître votre contexte et votre objectif.
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  3. #3
    Expert éminent
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 821
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 821
    Points : 6 443
    Points
    6 443
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    - Il considère la consommation de l'OS à 20% de la RAM
    Ah ? Quelle que soit la taille de la RAM ?

    Pour calculer la PGA d'un utilisateur connecté il fait simplement : 1Mo + sort_area + hash_area
    Si un utilisateur fait un tri de plus de sort_area_size octets, alors il consomme effectivement sort_area_size. Et s'il fait un hash join où la table hachée fait plus de hash_area_size, il consommera effectivement hash_area_size.
    Mais s'il en faut aucun ? S'il fait un tri et 2 hash joins ? Et si en plus de ca il a une mega collection dans son pl/sql ?

    - Pour finir il indique que la taille de la PGA est calculée en multipliant cette valeur par le nombre d'utilisateurs connectés.
    Il suppose donc tous les utilisateurs connectés sont en train de faire excatement un tri et un hash join

    Je ne sais pas trop quoi en penser, ça vous parle ?
    Je préfère regarder les wait events 'direct path read/write temp' pour savoir si je passe du temps à échanger une sort_area ou une hash area avec les tempfiles. Et si oui, je regarde V$SQL_WORKAREA_HISTOGRAM pour voir quelles requêtes font des onepass ou pire des multipass.
    Et je jouerait plutôt sur PGA_AGGREGATE_TARGET et exceptionnellement, peut être pour un batch dont je maitrise le nombre de connexions, je passerais en WORKAREA_SIZE_POLICY=MANUAL pour mettre un gros sort_area_size.

    cordialement,
    Franck.
    Franck Pachot - Developer Advocate Yugabyte 🚀 Base de Données distribuée, open source, compatible PostgreSQL
    🗣 twitter: @FranckPachot - 📝 blog: blog.pachot.net - 🎧 podcast en français : https://anchor.fm/franckpachot

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Ah ? Quelle que soit la taille de la RAM ?
    Surement pour la configuration actuelle (1,25Go).

    Vos indications confirme l'idée que je me faisais de cette article... Là où tout le monde rabâche qu'il n'y a pas de calculs miracles pour tailler la PGA, lui, annonce une somme à trois arguments...

    On peut disserter longuement sur le baratin de Burleson, mais il sera plus utile de connaître votre contexte et votre objectif.
    En fait je n'ai pas d'exemple, contexte ou besoin particulier je voulais simplement m'informer, mais d'après ce que je lis il faut commencer par une configuration initiale et la faire évoluer en fonction des besoins. Le rôle du DBA en fin de compte...

    Merci à vous.

  5. #5
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 460
    Points : 8 077
    Points
    8 077
    Par défaut
    Une chose est sure, c'est que la PGA nécessaire dépend de l'application, et qu'il est donc difficile de déterminer sa taille à l'avance.
    Pour se faciliter la vie, il est vivement conseillé d'utiliser les PGA globalisées, grâce à PGA_AGGREGATE_TARGET.

    Il n'y a guère d'autre choix que de choisir une taille de départ un peu à la louche, par exemple 5 Mo par session simultanée, donc un PGA_AGGREGATE_TARGET de 250M pour 50 sessions.
    Puis on fait tourner l'application, et on tire profit des vues V$PGA_TARGET_ADVICE et V$PGA_TARGET_ADVICE_HISTOGRAM, pour savoir si une augmentation serait favorable, et dans quelle proportion.

    La taille maximum qu'un processus peut consommer en PGA est gouvernée par le paramètre caché _PGA_MAX_SIZE. Dans des cas extrêmes où un processus unique aurait besoin d'une grosse proportion de PGA_AGGREGATE_TARGET pour lui tout seul, il pourrait être nécessaire de jouer sur ce paramètre.
    Voir ici par exemple : http://christianbilien.wordpress.com..._pga_max-size/
    Consultant / formateur Oracle indépendant
    Certifié OCP 12c, 11g, 10g ; sécurité 11g

    Ma dernière formation Oracle 19c publiée sur Linkedin : https://fr.linkedin.com/learning/oracle-19c-l-administration

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 17
    Points : 12
    Points
    12
    Par défaut
    Merci pour la clarté, ca te dérangerai de commenter le résultat de la requête suivante ?

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    SELECT  ROUND(((pga_target_for_estimate/1024)/1024),2) AS "ESTIMATED (Mo)",
            pga_target_factor AS factor,
            ROUND(((estd_extra_bytes_rw/1024)/1024),2) AS "EXTRA BYTES (Mo)",
            estd_pga_cache_hit_percentage AS cahe_hit_percentage,
            estd_overalloc_count AS over_alloc 
    FROM V$PGA_TARGET_ADVICE;
     
    ESTIMATE (Mo)          FACTOR                 EXTRA BYTES (Mo)       CAHE_HIT_PERCENTAGE    OVER_ALLOC             
    ---------------------- ---------------------- ---------------------- ---------------------- ---------------------- 
    11,5                   0,125                  266,65                 94                     58                     
    23                     0,25                   181,54                 96                     41                     
    46                     0,5                    0                      100                    0                      
    69                     0,75                   0                      100                    0                      
    92                     1                      0                      100                    0                      
    110,4                  1,2                    0                      100                    0                      
    128,8                  1,4                    0                      100                    0                      
    147,2                  1,6                    0                      100                    0                      
    165,6                  1,8                    0                      100                    0                      
    184                    2                      0                      100                    0                      
    276                    3                      0                      100                    0                      
    368                    4                      0                      100                    0                      
    552                    6                      0                      100                    0                      
    736                    8                      0                      100                    0                      
     
    14 rows selected
    Exécuté sur une base de test (srv 2003, 64bits, 1go RAM) SGA = 280Mb, PGA = 92Mb

    Merci.

Discussions similaires

  1. [VB6] Dimension d'une fenetre extérieure
    Par Ingham dans le forum VB 6 et antérieur
    Réponses: 3
    Dernier message: 22/01/2003, 16h52
  2. [VB6] [Graphisme] Dimensions d'une image au saving
    Par jeanseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 14/12/2002, 19h09
  3. Dimensions des colonnes d'un TDBGrid
    Par osmose22 dans le forum C++Builder
    Réponses: 4
    Dernier message: 11/12/2002, 11h27
  4. Réponses: 4
    Dernier message: 03/12/2002, 16h47
  5. Réponses: 4
    Dernier message: 13/05/2002, 16h43

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