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

Oracle Discussion :

[Taille] Estimation de la taille d'une ligne


Sujet :

Oracle

  1. #1
    Membre régulier
    Homme Profil pro
    Intégrateur
    Inscrit en
    Novembre 2004
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2004
    Messages : 139
    Points : 86
    Points
    86
    Par défaut [Taille] Estimation de la taille d'une ligne
    Je sais... Je sais... Probablement, j'enfonce une porte déjà ouverte...
    Je m'en excuse par avance. Mais j'aimerais que l'on éclaire ma lanterne sur ci-dessous

    Version : Oracle 9.2.0.6
    J'ai une table avec les caractéristiques suivantes :
    • Sous-partitionnée
    • EXTENT MANAGEMENT LOCAL UNIFORM SIZE 1M
    • 102 473 112 lignes
    • avg(avg_row_len) = 156o de la table dba_tab_subpartitions
    • occupation en tablespace = 26 287 Mo
    • pct_free=10, pct_used=40
    • Uniquement de truncate partition et insert par SQL*Loader sans direct path : jamais de delete, jamais de update (je sais que pct_free peut être amené à 0... )
    J'ai un avg_row_len de 156 o obtenu par la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    SELECT table_name,round(avg(avg_row_len)) 
    FROM dba_tab_subpartitions 
    WHERE table_name ='MaTable' 
    GROUP BY table_name
    Les statistiques obtenues quotidiennement (entre autres le avg_row_len) sont réalisées sur la nouvelle partition J-1 et obtenues par la commande
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    DBMS_STATS.GATHER_TABLE_STATS('OWNER','${1}', '${2}', estimate_percent => 75,  granularity => 'SUBPARTITION',cascade => TRUE);
    DBMS_STATS.GATHER_TABLE_STATS('OWNER','${1}', '${2}', estimate_percent => 75, granularity => 'PARTITION',cascade => TRUE);
    ou $1 est la table et $2 la partition

    L'estimation (à l'extent près) de l'occupation de la table est obtenue par la commande suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    SELECT s.table_name AS latable,
               s.partition_name ,
               count(*) AS nb,
               sum  (e.BYTES)/1024/1024 AS taille
       FROM dba_extents e,dba_tab_subpartitions s 
       WHERE e.PARTITION_NAME=s.SUBPARTITION_NAME 
       AND table_name='MaTable'
       GROUP BY s.table_name,s.partition_name
    J'arrive, enfin à ma question...
    Pourquoi un avg_row_len=156o (ce qui me semble acceptable à ma connaissance des données chargées) alors que 26 827 Mo / 102 473 112 = 269o ? etc ...

    Je m'attendais à une différence (il y a tjs un surcout de stockage de la donnée quelque soit le SGBDR) mais pas presque 72%...

  2. #2
    Membre régulier
    Homme Profil pro
    Intégrateur
    Inscrit en
    Novembre 2004
    Messages
    139
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Intégrateur
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Novembre 2004
    Messages : 139
    Points : 86
    Points
    86
    Par défaut
    Je viens de faire un autre recoupement...

    db_block_size=8192o
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    select sum(blocks) 
    from dba_tab_subpartitions 
    where table_name='MaTable'
    J'obtiens 2 344 143

    Soit mon calcul 2 344 143 * 8 192 /102 473 112 = 186 o
    Cela me semble plus cohérent avec 156o

    Mais alors pourquoi un tel delta à partir de l'occupation en tablespace et les statistiques ... ?

Discussions similaires

  1. Réponses: 5
    Dernier message: 23/04/2008, 16h52
  2. Réponses: 2
    Dernier message: 23/05/2007, 17h51
  3. [CSV] Taille d’une ligne d’un FICHIER
    Par sam01 dans le forum Langage
    Réponses: 1
    Dernier message: 22/01/2007, 11h22
  4. la taille extensible d'une ligne dans une table
    Par Platon93 dans le forum Access
    Réponses: 9
    Dernier message: 30/11/2006, 16h08
  5. taille max de nb de caractère dans une ligne de table mysql
    Par zidenne dans le forum Administration
    Réponses: 1
    Dernier message: 01/09/2006, 11h04

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