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

Adaptive Server Enterprise Sybase Discussion :

Connaître la taille d'une table


Sujet :

Adaptive Server Enterprise Sybase

  1. #1
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut Connaître la taille d'une table
    Bonjour,

    Je souhaite récupérer la taille d'une table sans avoir à passer par sp_spaceused, simplement par du SQL. J'ai regardé le code du sp_spaceused, ça me semble bien compliqué et je n'ai pas besoin de toutes les informations remontées. Si l'un d'entre vous possède une requête SQL et veuille bien la fournir, je suis preneur.

    Merci d'avance pour votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    1 307
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 1 307
    Points : 1 828
    Points
    1 828
    Par défaut
    En 15.x, pour connaitre la taille de la table (y compris les indexes) (en MB):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    select data_pages(db_id('nom_db'), object_id('nom_table')) * @@maxpagesize / 1024e / 1024e
    Michael
    Michael Peppler
    Membre de TeamSybase - www.teamsybase.com

    "A successful [software] tool is one that was used to do something undreamed of by its author." -- S. C. Johnson

  3. #3
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Merci Michael.

  4. #4
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Michael,
    Par contre, lorsque je lance un sp_spaceused sur une table, j'obtiens ce qui suit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    1> sp_spaceused T_CHAMBRE
    2> go
     name               rowtotal         reserved         data     index_size           unused
     ------------------ ---------------- ---------------- -------- -------------------- ------------
     T_CHAMBRE          20               128 KB           8 KB     8 KB                 112 KB
     
    (1 row affected)
    (return status = 0)
    Lorsque j'utilise ta ligne de script, voici le résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1> SELECT data_pages(db_id('hotel'), object_id('T_CHAMBRE')) * @@maxpagesize / 1024e / 1024e
    2> go
     
     ---------------------------
                        0.015625
     
    (1 row affected)
    D'ou provient cette différence ?

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    461
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 461
    Points : 283
    Points
    283
    Par défaut
    Michael,
    En fait, j'ai trouvé. Il faut y ajouter les reserved_page. Néanmoins, une petite différence subsiste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    1> SELECT (data_pages(db_id('hotel'), object_id('T_CHAMBRE')) + reserved_pages(db_id('hotel'), object_id('T_CHAMBRE')))  * @@maxpagesize / 1024e / 1024e
    2> go
     
     ---------------------------
                        0.140625
     
    (1 row affected)
    D'où cela peut-il provenir ?
    Merci d'avance.

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

    Informations forums :
    Inscription : Octobre 2009
    Messages : 20
    Points : 16
    Points
    16
    Par défaut
    En sybase 11.9, nous utilisons

    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
     
    select "name"            = @@servername+"."+db_name()+"."+o.name,
           "lockrow"         = case when ((sysstat2 & 49152) = 0) then "allpages"
                                    when ((sysstat2 & 32768) > 0) then "datarows"
                                    else "datapages" end,
           "rowtotal"        = convert(numeric(10,0),sum(rowcnt(i.doampg))),
           "reserved"  		 = convert(numeric(10,0),sum(convert(numeric(32, 9), (reserved_pgs(i.id, i.doampg) + reserved_pgs(i.id, i.ioampg))) * (low / 1024))),
           "data_size"		 = convert(numeric(10,0),sum(convert(numeric(32, 9), data_pgs(i.id, i.doampg)) * (low / 1024))),
           "index_size"		 = convert(numeric(10,0),sum(convert(numeric(32, 9), data_pgs(i.id, i.ioampg)) * (low / 1024))),
           "unused"		     = convert(numeric(10,0),sum(convert(numeric(32, 9), ((reserved_pgs(i.id, i.doampg) + reserved_pgs(i.id, i.ioampg)) - (data_pgs(i.id, i.doampg) + data_pgs(i.id, i.ioampg)))) * (low / 1024)))  
    from master.dbo.spt_values d,
           sysobjects o,
           sysindexes i
    where o.type in ('U', 'S')
       and o.id = i.id
       and d.number = 1
       and d.type = "E"
      group by o.id
      order by 4 desc
    je note l'utilisation de low au lieu de @@maxpagesize.

    Si cela peut aider.

Discussions similaires

  1. connaître la taille d'une table sous oracle
    Par loukili81 dans le forum Administration
    Réponses: 2
    Dernier message: 01/06/2007, 15h24
  2. [MySQL] Taille d'une table/base
    Par Indyana dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 21/10/2005, 11h24
  3. connaître la taille d'une image ?
    Par rigolman dans le forum Langage
    Réponses: 2
    Dernier message: 09/10/2005, 22h55
  4. taille d'une table + que 4 Go
    Par amika dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 12/08/2005, 18h23
  5. taille d'une table
    Par jean-jacques varvenne dans le forum Oracle
    Réponses: 11
    Dernier message: 29/12/2004, 13h17

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