quarta-feira, 23 de março de 2011

#2 - Tamanho de Tabelas

Esta semana me deparei com uma situação um pouco diferente no trabalho, precisei descobri o tamanho de algumas tabelas de algumas DB, após procurar mais informações com outros colaboradores achei algumas informações que foram úteis;

use DBTESTE;

SELECT * FROM SYS.TABLES ;

Esse comando retorna a relação de tabelas do DB, existe um campo importante nessa consulta que é o "object_id", como ele você pode

Se vc quer descobrir dados de uma tabela basta executar:

sp_spaceused "table"

Essa sp exibe, respectivamente, o nome da tabela (name), número de linhas (rows), espaço reservado para a tabela (reserved), espaço usado pelos dados na tabela (data), espaço usado pelos indexes da tabela (index_size) e espaço sem uso na tabela (unused).

mas se você tiver uma DB com muitas tabelas você usar o seguinte comando:

DECLARE c CURSOR
FAST_FORWARD
FOR SELECT name
FROM sysobjects
WHERE xtype='U'
DECLARE @Name varchar(64)
OPEN c
FETCH NEXT FROM c INTO @Name
WHILE @@FETCH_STATUS = 0
BEGIN
EXEC sp_spaceused @Name
FETCH NEXT FROM c INTO @Name
END
CLOSE c
DEALLOCATE c

buscando formas mais eficientes de ver as informações sobre as tabelas encontrei essa :

SELECT OBJECT_NAME(ID) TABELA, CONVERT(DEC(15),SUM(RESERVED)) RESERVED
INTO #X
FROM SYSINDEXES
WHERE indid in (0, 1, 255)
GROUP BY ID

SELECT TABELA, LTRIM(STR(RESERVED * D.LOW / 1024, 15, 0)) + ' KB'
FROM #X, master.dbo.spt_values d
where d.number = 1
and d.type = 'E'
ORDER BY RESERVED DESC

drop table #X

Nenhum comentário:

Postar um comentário