Visualizzare lo spazio occupato dalle singole tabelle

Rieccomi alla carica, oggi vedremo come analizzare lo spazio utilizzato all'interno del proprio database.

Possiamo utilizzare la stored procedure (come sempre non documentata) sp_MStablespace che ritorna il numero di righe, lo spazio utilizzato per i dati e lo spazio utilizzato per gli indici espressi in KB, l'utilizzo della sp è semplicissimo basta inserire come parametro il nome della tabella (es. EXEC sp_MStablespace mytable).

Ovviamente se il database è composto da diverse decine o centinaia di tabelle non è molto simpatico richiamare tabella per tabella, potremmo inserire la sp sp_MStablespace in un cursore e far ciclare tutte le tabelle ma otterremmo una collezione di resultset di non facile lettura ed inoltre non sapremmo a quale database corrisponde il resultset, per ovviare a questo "problema" ecco un piccolo esempio che permette di visualizzare i dati relativi a tutte le tabelle di un database

declare @pagesize int
select @pagesize=v.low / 1024 from master..spt_values v where v.number=1 and v.type=N'E'
select
 sysobjects.id,
 user_name(uid) as dbuser,
 sysobjects.name as dbname,
 sum(convert(int,rowcnt)) as rows,
 sum(used * @pagesize) as SpaceUsed
from sysobjects inner join sysindexes on sysindexes.id=sysobjects.id
where
 xtype=N'U' and (indid < 2 or indid=255)
group by
 sysobjects.id,
 user_name(uid),
 sysobjects.name
order by
 user_name(uid),
 sysobjects.name

Un avvertenza il codice sopra descritto restituisce la dimensione totale della tabella incluso lo spazio occupato dagli indici.

Nella stessa categoria
    Nessuna risorsa collegata

    Commenti

    Aggiungi un nuovo commento »»»
    Per inserire un commento, devi registrarti alla nostra community.

    © 1998-2008 - IT-ch - Il blog di Christian Paparelli

    TagCloud
    BLOG INFO
    • Post: 97
    • Commenti: 52
    • TrackBacks: 12
    • Feed blog e contenuti tecnici: RSS
    • Feed blog: RSS Atom OPML
    CATEGORIE
    I PIÙ LETTI DEL MESE
    IN EVIDENZA