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 :

Taille des tables.


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut Taille des tables.
    On m'a fait une remarque sur le fait qu'il y a des tables dans ma base de données qui sont plus
    grosse par rapport à sa taille réelle.


    Chose que je ne comprends pas c'est quoi la taille d'une table? A quoi ca correspond?
    Est-ce que le fait d'avoir une table plus grosse par rapport à sa taille réelle influe sur les performanceS?
    Y-a-t-il un moyen de réduire la taille d'une table?

    Merci beaucoup,

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 207
    Par défaut
    Bonjour,

    tout d'abord pour connaitre la taille d'une table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT Segment_Name,SUM(Bytes)/1024/1024 "Taille en MO"
    FROM User_Segments
    WHERE Segment_Name ='NOM_TABLE'
    GROUP BY Segment_Name;
    Ensuite pour l'histoire de place, il peu s'agir de fragmentation liés beaucoup de lete par exemple ou alors à du chainage (article sur le chainage : http://www.lao-dba.com/article-25517684.html).

    Un moyen de récupérer cette espace est de faire un move de la table

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ALTER TABLE Nom_Table MOVE TABLESPACE Nom_Du_Tablespace;
    Attention après un move, il faut reconstruire tous les indexes de la table.

    Laurent

  3. #3
    Membre Expert Avatar de fatsora
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 103
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 103
    Par défaut
    Bonjour,

    quelle est ta version ORACLE

    car de ca depend les moyens pour "reorganiser" les tables ...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    207
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 207
    Par défaut
    Re :

    A partir d'Oracle 10, l'utilsation de la commande SHRINK
    cf doc: http://download.oracle.com/docs/cd/B...htm#ADMIN10161

    Laurent

  5. #5
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

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

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour

    Tout dépends de ce que 'on' appelle taille de table et taille réelle.

    BYTES dans DBA_SEGMENTS est la taille allouée (qui n'est pas utilisable par une autre table)
    BYTES dans DBA_TABLES est la taille dans laquelle il y a (ou il y a eu) des données: c'est celle là qui compte pour les performances (en cas de full table scan uniquement)

    Mais si tu delete tous les enregistrements, ces tailles ne va pas diminuer. Donc si la taille réelle est celle des données, c'est: nombre d'enregistrement * taille moyenne d'enregistrement (colonnes NUM_ROWS et AVG_ROW_LENGTH dans DBA_TABLES ... si les stats sont à jour)

    Cordialement,
    Franck.

  6. #6
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 15
    Par défaut
    Je voulais tout simplement avoir une requête me permettant de récupérer l'espace qui a été alloué pour une table, et l'espace qui est réellement utilisé pour stocker les données de la table.

    Les requêtes sql ci-dessous permettent respectivement de faire les deux actions.

    select bytes "Bytes Alloués" from user_segments where segment_name = 'NomDeMaTable' ;

    select num_rows * avg_row_len "Bytes Utilisés" from user_tables where table_name = 'NomDeMaTable' ;

  7. #7
    Membre expérimenté Avatar de Laurent_du_78
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    138
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France, Yvelines (Île de France)

    Informations forums :
    Inscription : Juin 2007
    Messages : 138
    Par défaut
    Citation Envoyé par anjiniaina Voir le message
    Je voulais tout simplement avoir une requête me permettant de récupérer l'espace qui a été alloué pour une table, et l'espace qui est réellement utilisé pour stocker les données de la table.

    Les requêtes sql ci-dessous permettent respectivement de faire les deux actions.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    select bytes "Bytes Alloués" from user_segments where segment_name = 'NomDeMaTable' ;
     
    select num_rows * avg_row_len "Bytes Utilisés" from user_tables where table_name = 'NomDeMaTable' ;
    Ok, pour la première requête, c'est la somme de tous les extents.
    Pour la seconde, il faut une petite marge en plus, car le bloc ne contient pas que des enregistrements. Il contient une entête qui varie entre 185 à 200 octet environ, fonction du init_trans par exemple

  8. #8
    Membre chevronné
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    290
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 290
    Par défaut
    Assure toi également que les stats sont à jour pour utiliser les données affichées dans user_tables.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Augmentation soudaine de la taille des tables
    Par tristan_37 dans le forum Oracle
    Réponses: 35
    Dernier message: 09/04/2008, 16h52
  2. Performance, taille des tables=> nbr de champs
    Par shadeoner dans le forum Requêtes
    Réponses: 5
    Dernier message: 05/12/2007, 13h26
  3. [Access 2000] Taille des tables
    Par Marco_SAP dans le forum Access
    Réponses: 15
    Dernier message: 08/09/2005, 16h00
  4. Taille des Tables InnoDB
    Par Mehdi Feki dans le forum Outils
    Réponses: 2
    Dernier message: 29/08/2005, 10h21
  5. SQL 2000 - Liste + taille des tables et index
    Par Fox dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 12/03/2004, 15h59

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