Précédent   Forum des professionnels en informatique > Bases de données > Sybase
Sybase Forum sur la base de données Sybase. Avant de poster -> F.A.Q Sybase, Tutoriels Sybase
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 29/08/2006, 15h42   #1
Membre habitué
 
Inscription : mars 2006
Messages : 293
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 293
Points : 140
Points : 140
Par défaut [ASE]Calcul de la taille de mes tables

Bonjour à tous, je suis confronté a des contraintes de temps et dés lors je voudrais savoir comment voir la taille de toutes les tables en une seul requète ..
Je suppose qu'il faut taper sur sysobjects, mais si qq'un a déja un truc utilisable merci par avance ...
arona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2006, 16h36   #2
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Taille par segment, pour ASE 12.5:

Code :
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
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
 
SET arithabort off
 
SELECT s.segment
     , "total_space" = convert(float, sum(u.size)) * @@maxpagesize/(1024.0 * 1024.0)
     , "free_space" = case when s.segment = 2
          then 
            convert(float, sum(lct_admin("logsegment_freepages", db_id()))) * @@maxpagesize / (1024.0 * 1024.0)
          else
            convert(float, sum(curunreservedpgs(u.dbid, u.lstart, u.unreservedpgs))) * @@maxpagesize / (1024.0 * 1024.0)
       end
     , s.name
  INTO #segments
  FROM master..sysusages u
     , syssegments s
 WHERE u.dbid = db_id()
   AND (power(2, s.segment) & u.segmap) = power(2, s.segment)
 GROUP BY s.segment, s.name
 
SELECT i.id
     , "used" = convert(float, reserved_pgs(i.id, i.doampg)) * @@maxpagesize / (1024.0 * 1024.0)
     , i.segment
  INTO #used
  FROM sysobjects o
     , sysindexes i
 WHERE o.id = i.id
   AND i.indid < 2
   AND o.sysstat2 & 57344 IN (32768, 16384)
 
SELECT o.name
     , i.used
     , i.segment
     , s.name
     , s.free_space
     , "pct" = s.free_space / i.used
  FROM sysobjects o
     , #used i
     , #segments s
 WHERE o.id = i.id
   AND i.segment = s.segment
 
DROP TABLE #segments
DROP TABLE #used
Ce listing done aussi la place disponible dans le segment sur lequel la table est placée.

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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2006, 16h57   #3
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Citation:
Envoyé par mpeppler
Taille par segment, pour ASE 12.5:
Merci bien pour cette rêquete, je suis assez novice dans le domaine de l'administration.
Peux-tu donner plus d'informations, détailler si possible les requêtes ?
A quoi correspond l'option "arithabort" ?
Merci.
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/08/2006, 17h03   #4
Membre habitué
 
Inscription : mars 2006
Messages : 293
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 293
Points : 140
Points : 140
Merci pour la requète moi j'ai fais cette requète nettement plus succinte et moins complète mais quand même
;-)
A+
Code :
1
2
3
4
5
6
7
 
SELECT sysobjects.name, sysobjects.loginame, space_used_kb=sum(used_pgs(sysobjects.id, doampg, ioampg) * 4)
FROM sysindexes, sysobjects
WHERE sysobjects.id > 100 AND sysobjects.type = 'U'
AND sysindexes.id = sysobjects.id
GROUP BY sysobjects.id, sysobjects.loginame
ORDER BY space_used_kb
arona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 30/08/2006, 11h24   #5
Rédacteur/Modérateur
 
Inscription : janvier 2006
Messages : 1 301
Détails du profil
Informations personnelles :
Âge : 52

Informations forums :
Inscription : janvier 2006
Messages : 1 301
Points : 1 505
Points : 1 505
Envoyer un message via AIM à mpeppler
Citation:
Envoyé par lsone
Merci bien pour cette rêquete, je suis assez novice dans le domaine de l'administration.
Peux-tu donner plus d'informations, détailler si possible les requêtes ?
A quoi correspond l'option "arithabort" ?
Merci.
arithabort permet de contrôler le comportement en cas d'erreur arithmetique (division par 0, par example).

Pour le reste:

La première requète (sur syssegments et sysusages) permet de déterminer le mapping des segments par rapport aux fragments de disques définis pour la base. Je rappelle que les segments sont utilisés pour placer un objet sur un device particulier - sans action particulière une base comporte les segment "system", "logsegment" et "default". On peut ajouter des segments via sp_addsegment et placer des objets (tables, indexes) sur des segments spécifique via create ... on nom_segment, par example. Le mapping des segments se fait via un "et" binaire d'où la condition de jointure:
Code :
1
2
 
AND (power(2, s.segment) & u.segmap) = power(2, s.segment)
La deuxième requète donne la taille de chaque objet par segment. La condition
Code :
1
2
 
AND o.sysstat2 & 57344 IN (32768, 16384)
limite la liste des objets aux tables en mode DOL (datapages et datarows locking). C'est une clause que j'ai oublié d'enlever de ma requète originale (c'est pris d'un script qui valide qu'il y a suffisamment de place dans le segment pour faire un REORG REBUILD...)

La troisième requète est purement une requète de présentation, qui peut évidemment être combinée avec la requète précédente...

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
mpeppler est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 14h13   #6
Membre habitué
 
Inscription : mars 2006
Messages : 293
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 293
Points : 140
Points : 140
Merci ;-)
arona est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 01/09/2006, 15h36   #7
Membre du Club
 
Inscription : octobre 2005
Messages : 79
Détails du profil
Informations personnelles :
Âge : 32

Informations forums :
Inscription : octobre 2005
Messages : 79
Points : 46
Points : 46
Citation:
Envoyé par mpeppler
Merci beaucoup, c'est plus clair !
lsone est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h11.


 
 
 
 
Partenaires

Hébergement Web