Tamaño de Tablas en SQL 2000???

11/03/2005 - 14:58 por Maxi | Informe spam
Hola a todos!!!!
Tengo una BD en SQL Server 2000 la cual es utilizada por varios clientes,
necesito saber el TAMAÑO O PORCENTAJE de utilizacion de tablas de cada
cliente.
Supongo que haciendo una consulta para un cliente especifico me devuelve la
cantidad de registros que estan involucrados, pero como obtengo ese tamaño o
porcentaje fisico en forma automatica?.
Si me tengo que poner a hacerlo en forma manual, es bastante tedioso. Existe
alguna herramienta o componente externo que me sirva para esto???
Gracias.!!!!

Preguntas similare

Leer las respuestas

#6 Isaías
11/03/2005 - 16:50 | Informe spam
"Maxis"

Javier Loria, hace poco publico una rutina que da la
información de las tablas, espero sirva:

select sysobjects.name
, sum(case when sysindexes.indid<2 then rows
else 0 end) as rows
, sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved
else 0 end) * 8 as reserved
, sum(case when sysindexes.indid in (0,1) then
sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end) * 8 as Data
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.used
else 0 end)
- sum(case when sysindexes.indid in (0,1) then
sysindexes.dpages
when sysindexes.indid%5 then sysindexes.used
else 0 end))*8 as index_size
, (sum(case when sysindexes.indid in (0,1,255) then
sysindexes.reserved-sysindexes.used
else 0 end)*8) as unused
from sysobjects
join sysindexes
on sysobjects.id=sysindexes.id
where xtype='U'
group by sysobjects.name
order by 2 desc
Respuesta Responder a este mensaje
#7 qwalgrande
11/03/2005 - 16:53 | Informe spam
Hola.

Para calcular el peso de un registro en una tabla tienes que sumar byte a
byte lo que ocupa cada campo de la tabla. A saber, si tienes un campo int,
4, si tienes un campo varchar(10), suponemos que se llena la mitad, 5 bytes,
si tienes un campo nchar(20), pues 40. Y así con todo. Si hay una tabla
relacionada que por cada registro en la tabla maestra tiene de media 2,5
registros, multiplicas. Así hasta llegar al peso de un usuario o consulta o,
en general, entidad que debas ponderar.

qwalgrande


"Maxi" wrote in message
news:
Gracias, es una forma de poder hacero bastante buena.
Pero como puedo hacer para calcular el tamaño medio de una" Consulta
Relacionada de Varias Tablas",
ya que es fundamental para poder calcular todo lo demas.
Alguna idea???
Gracias!!!!!!

"qwalgrande" escribió en el mensaje
news:
Hola.

Yo me encontrado alguna vez ante esta misma pregunta "cuánto ocupa cada
país
del total de la base de datos", cuyo fin es cobrarles la parte porcentual
del hosting o cobrarles una posible ampliación de disco a dichos clientes.
Hazlo como veas, pero yo trataría de hacer el siguiente cálculo
aproximado:
- Calculas el tamaño de un registro "normal" de un usuario y sus tablas
relacionadas de un cliente normal (con el peso de cada columna y de todas
las tablas en las que "normalmente" está un cliente). Con ello obtienes el
peso medio de un registro.
- Recuentas los registros que tienes de cada cliente y lo que supone en
porcentaje usando una tabla de refencia (tabla de usuarios o tabla de
facturas, no sé depende de lo que estés manejando). Con eso, multiplicas
usuarios de cada país por el peso medio de un usuario y sus relaciones.
- Con las tablas auxiliares que son comunes (países, provincias, etc),
sumas lo que ocupan usando sp_spaceused y lo divides como veas, bien
porcentualmente o bien de forma ponderada conforme al % de cada cliente.

Así obtienes unas cifras que son una aproximación, pero que no es una mala
aproximación. Querer ir más allá es un trabajo artesanal y de chinos que
te
puede llevar semanas o meses. En cualquier caso, suerte.

qwalgrande


"Maxi" wrote in message
news:
Hola a todos!!!!
Tengo una BD en SQL Server 2000 la cual es utilizada por varios clientes,
necesito saber el TAMAÑO O PORCENTAJE de utilizacion de tablas de cada
cliente.
Supongo que haciendo una consulta para un cliente especifico me devuelve
la
cantidad de registros que estan involucrados, pero como obtengo ese tamaño
o
porcentaje fisico en forma automatica?.
Si me tengo que poner a hacerlo en forma manual, es bastante tedioso.
Existe
alguna herramienta o componente externo que me sirva para esto???
Gracias.!!!!



Respuesta Responder a este mensaje
#8 Maxi
11/03/2005 - 16:53 | Informe spam
Claro, es valida la consulta pero para una solo tabla, si necesito unir
varias Tablas, como obtengo el valor????
Alguna idea???
Saludos.-


"Maxi" escribió en el mensaje
news:
mmmm, no te es util en porcentaje de la tabla? o sea que esos registros
ocupan el 15% del total de los registros?

de ser asi solo deberias hacer algo como esto

SELECT 100.0 * (1.0 * COUNT(*) / (SELECT COUNT(*) FROM TABLA))
FROM TABLA
WHERE

Salu2
Maxi


"Maxi" escribió en el mensaje
news:
Gracias, tocayo!!!
La funcion sp_spaceused sirve solo para una Tabla o toda la BD completa,
el tema que necesito saber para un grupo de registros de esa tabla cuanto
espacio ocupa
, o sea si efectuo un Select y me trae 1000 registros y en total hay
10000 entonces
deberia, de alguna manera decirme que ocupa un 10% de la Tabla y x MB o
GB de tamaño.
Alguna idea????



"Maxi" escribió en el mensaje
news:
Hola, tocayo, podes usar sp_spaceused, revisa lo BOL que veras la
sintaxis :-)


Salu2
Maxi


"Maxi" escribió en el mensaje
news:
Hola a todos!!!!
Tengo una BD en SQL Server 2000 la cual es utilizada por varios
clientes, necesito saber el TAMAÑO O PORCENTAJE de utilizacion de
tablas de cada cliente.
Supongo que haciendo una consulta para un cliente especifico me
devuelve la cantidad de registros que estan involucrados, pero como
obtengo ese tamaño o porcentaje fisico en forma automatica?.
Si me tengo que poner a hacerlo en forma manual, es bastante tedioso.
Existe alguna herramienta o componente externo que me sirva para
esto???
Gracias.!!!!














Respuesta Responder a este mensaje
#9 Maxi
11/03/2005 - 17:18 | Informe spam
Pues solo debes hacer un UNION, tenes algun mini ejemplo de las tablas para
poder armarte algo?


Salu2
Maxi


"Maxi" escribió en el mensaje
news:epY%
Claro, es valida la consulta pero para una solo tabla, si necesito unir
varias Tablas, como obtengo el valor????
Alguna idea???
Saludos.-


"Maxi" escribió en el mensaje
news:
mmmm, no te es util en porcentaje de la tabla? o sea que esos registros
ocupan el 15% del total de los registros?

de ser asi solo deberias hacer algo como esto

SELECT 100.0 * (1.0 * COUNT(*) / (SELECT COUNT(*) FROM TABLA))
FROM TABLA
WHERE

Salu2
Maxi


"Maxi" escribió en el mensaje
news:
Gracias, tocayo!!!
La funcion sp_spaceused sirve solo para una Tabla o toda la BD completa,
el tema que necesito saber para un grupo de registros de esa tabla
cuanto espacio ocupa
, o sea si efectuo un Select y me trae 1000 registros y en total hay
10000 entonces
deberia, de alguna manera decirme que ocupa un 10% de la Tabla y x MB o
GB de tamaño.
Alguna idea????



"Maxi" escribió en el mensaje
news:
Hola, tocayo, podes usar sp_spaceused, revisa lo BOL que veras la
sintaxis :-)


Salu2
Maxi


"Maxi" escribió en el mensaje
news:
Hola a todos!!!!
Tengo una BD en SQL Server 2000 la cual es utilizada por varios
clientes, necesito saber el TAMAÑO O PORCENTAJE de utilizacion de
tablas de cada cliente.
Supongo que haciendo una consulta para un cliente especifico me
devuelve la cantidad de registros que estan involucrados, pero como
obtengo ese tamaño o porcentaje fisico en forma automatica?.
Si me tengo que poner a hacerlo en forma manual, es bastante tedioso.
Existe alguna herramienta o componente externo que me sirva para
esto???
Gracias.!!!!


















Respuesta Responder a este mensaje
#10 Alejandro Mesa
11/03/2005 - 18:29 | Informe spam
Maxi,

Creo que deberiamos buscar otra forma, pues el numero de filas no es
proporcional al tamaño. En el ejemplo que esta a continuacion, la tabla t3
tiene 2 grupos representados en colA (1 y 2) y cada grupo tiene 2 filas que
equivalen al 50% del total, pero a simple vista se puede ver que el tamanio
ocupado por cada grupo no es igual.

Ejemplo:

use northwind
go

create table t1 (
colA int not null,
colB varchar(8000)
)
go

create table t2 (
colA int not null,
colB varchar(8000)
)
go

insert into t1 values (1, replicate('a', 8000))
insert into t1 values (1, replicate('b', 8000))

insert into t2 values (2, 'a')
insert into t2 values (2, 'b')

select
colA, colB
into t3
from t1

insert into t3
select colA, colB
from t2
go

exec sp_spaceused t1
exec sp_spaceused t2
exec sp_spaceused t3
go

drop table t1, t2, t3
go


AMB


"Maxi" wrote:

Pues solo debes hacer un UNION, tenes algun mini ejemplo de las tablas para
poder armarte algo?


Salu2
Maxi


"Maxi" escribió en el mensaje
news:epY%
> Claro, es valida la consulta pero para una solo tabla, si necesito unir
> varias Tablas, como obtengo el valor????
> Alguna idea???
> Saludos.-
>
>
> "Maxi" escribió en el mensaje
> news:
>> mmmm, no te es util en porcentaje de la tabla? o sea que esos registros
>> ocupan el 15% del total de los registros?
>>
>> de ser asi solo deberias hacer algo como esto
>>
>> SELECT 100.0 * (1.0 * COUNT(*) / (SELECT COUNT(*) FROM TABLA))
>> FROM TABLA
>> WHERE
>>
>> Salu2
>> Maxi
>>
>>
>> "Maxi" escribió en el mensaje
>> news:
>>> Gracias, tocayo!!!
>>> La funcion sp_spaceused sirve solo para una Tabla o toda la BD completa,
>>> el tema que necesito saber para un grupo de registros de esa tabla
>>> cuanto espacio ocupa
>>> , o sea si efectuo un Select y me trae 1000 registros y en total hay
>>> 10000 entonces
>>> deberia, de alguna manera decirme que ocupa un 10% de la Tabla y x MB o
>>> GB de tamaño.
>>> Alguna idea????
>>>
>>>
>>>
>>> "Maxi" escribió en el mensaje
>>> news:
>>>> Hola, tocayo, podes usar sp_spaceused, revisa lo BOL que veras la
>>>> sintaxis :-)
>>>>
>>>>
>>>> Salu2
>>>> Maxi
>>>>
>>>>
>>>> "Maxi" escribió en el mensaje
>>>> news:
>>>>> Hola a todos!!!!
>>>>> Tengo una BD en SQL Server 2000 la cual es utilizada por varios
>>>>> clientes, necesito saber el TAMAÑO O PORCENTAJE de utilizacion de
>>>>> tablas de cada cliente.
>>>>> Supongo que haciendo una consulta para un cliente especifico me
>>>>> devuelve la cantidad de registros que estan involucrados, pero como
>>>>> obtengo ese tamaño o porcentaje fisico en forma automatica?.
>>>>> Si me tengo que poner a hacerlo en forma manual, es bastante tedioso.
>>>>> Existe alguna herramienta o componente externo que me sirva para
>>>>> esto???
>>>>> Gracias.!!!!
>>>>>
>>>>>
>>>>
>>>>
>>>
>>>
>>
>>
>
>



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida