desfragmentar archivo de base de 60 GB

08/07/2008 - 13:44 por DarthSidious | Informe spam
buenos dias, estoy intentando desfragmentar el archivo de una base de datos
que pesa 60 GB, y esta hubicado en un disco con capacidad de 100GB, por
consecuencia tengo solo 40GB libres. Paro los servicios de sql 2000, y luego
pongo a desfragmentar pero nunca desframenta nada. Solo dice que algunos
archivos no pudieron ser desfragmentados, y como es es el unico que hay en
ese disco no hizo nada jeje.

ahora, averiguando pude leer dos cosas, una que windows necesita 15% de
espacio libre para desfragentar, y otra que tiene que tener, en espacio
libre, 1.5 veces la cantidad de espacio ocupado.

Es esto asi? para desfragentar un archivo de 60GB tengo que tener libres al
menos 90 GB ???? como solucionan esto con bases de datos mas grandes?

gracias!!

Preguntas similare

Leer las respuestas

#1 Gux (MVP)
08/07/2008 - 16:36 | Informe spam
Está usted defragmentando el disco usando el defragmentador de Windows o cuál
herramienta?

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"DarthSidious" wrote:

buenos dias, estoy intentando desfragmentar el archivo de una base de datos
que pesa 60 GB, y esta hubicado en un disco con capacidad de 100GB, por
consecuencia tengo solo 40GB libres. Paro los servicios de sql 2000, y luego
pongo a desfragmentar pero nunca desframenta nada. Solo dice que algunos
archivos no pudieron ser desfragmentados, y como es es el unico que hay en
ese disco no hizo nada jeje.

ahora, averiguando pude leer dos cosas, una que windows necesita 15% de
espacio libre para desfragentar, y otra que tiene que tener, en espacio
libre, 1.5 veces la cantidad de espacio ocupado.

Es esto asi? para desfragentar un archivo de 60GB tengo que tener libres al
menos 90 GB ???? como solucionan esto con bases de datos mas grandes?

gracias!!
Respuesta Responder a este mensaje
#2 DarthSidious
08/07/2008 - 17:25 | Informe spam
con el de windows.

salu2!!

"Gux (MVP)" wrote:

Está usted defragmentando el disco usando el defragmentador de Windows o cuál
herramienta?

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"DarthSidious" wrote:

> buenos dias, estoy intentando desfragmentar el archivo de una base de datos
> que pesa 60 GB, y esta hubicado en un disco con capacidad de 100GB, por
> consecuencia tengo solo 40GB libres. Paro los servicios de sql 2000, y luego
> pongo a desfragmentar pero nunca desframenta nada. Solo dice que algunos
> archivos no pudieron ser desfragmentados, y como es es el unico que hay en
> ese disco no hizo nada jeje.
>
> ahora, averiguando pude leer dos cosas, una que windows necesita 15% de
> espacio libre para desfragentar, y otra que tiene que tener, en espacio
> libre, 1.5 veces la cantidad de espacio ocupado.
>
> Es esto asi? para desfragentar un archivo de 60GB tengo que tener libres al
> menos 90 GB ???? como solucionan esto con bases de datos mas grandes?
>
> gracias!!
Respuesta Responder a este mensaje
#3 Gux (MVP)
08/07/2008 - 18:05 | Informe spam
Según leo en su mensaje, el defragmentador de Windows ha ejecutado pero no ha
logrado defragmentar gran cosa. Suele suceder :-)

Para poder ejecutar, el defragmentador de Windows requiere 15% de espacio
libre. Y en general para que logre buenos resultados al defragmentar la
práctica recomienda tener mas o menos la mitad de la partición libre.

Seré curioso: Por qué desea usted defragmentar? (asumo que hay un motivo más
allá del genérico "un disco defragmentado tiene mejor rendimiento" :-))

Gustavo Larriera, Microsoft MVP
http://www.linkedin.com/in/gustavolarriera
Este mensaje se proporciona tal como es, sin garantías de ninguna clase.



"DarthSidious" wrote:

con el de windows.

salu2!!

"Gux (MVP)" wrote:

> Está usted defragmentando el disco usando el defragmentador de Windows o cuál
> herramienta?
>
> Gustavo Larriera, Microsoft MVP
> http://www.linkedin.com/in/gustavolarriera
> Este mensaje se proporciona tal como es, sin garantías de ninguna clase.
>
>
>
> "DarthSidious" wrote:
>
> > buenos dias, estoy intentando desfragmentar el archivo de una base de datos
> > que pesa 60 GB, y esta hubicado en un disco con capacidad de 100GB, por
> > consecuencia tengo solo 40GB libres. Paro los servicios de sql 2000, y luego
> > pongo a desfragmentar pero nunca desframenta nada. Solo dice que algunos
> > archivos no pudieron ser desfragmentados, y como es es el unico que hay en
> > ese disco no hizo nada jeje.
> >
> > ahora, averiguando pude leer dos cosas, una que windows necesita 15% de
> > espacio libre para desfragentar, y otra que tiene que tener, en espacio
> > libre, 1.5 veces la cantidad de espacio ocupado.
> >
> > Es esto asi? para desfragentar un archivo de 60GB tengo que tener libres al
> > menos 90 GB ???? como solucionan esto con bases de datos mas grandes?
> >
> > gracias!!
Respuesta Responder a este mensaje
#4 Eduardo De Guglielmo
08/09/2008 - 23:34 | Informe spam
"Jose Luis Cocha" wrote:

Primero que nada determina si tu problema de crecimiento es la fragmentacion
de indices. Por otro lado debes verificar tu informacion o si quiza debes
depurar tus registros mas antiguos.

Usa estos script que te envio .
SELECT OBJECT_NAME(dt.object_id),si.name, dt.avg_fragmentation_in_percent,
dt.avg_page_space_used_in_percent
FROM
(SELECT object_id, index_id, avg_fragmentation_in_percent,
avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID('<<Aqui colocar el nombre de tu
BD>>'), NULL, NULL, NULL, 'DETAILED')
WHERE index_id <> 0) as dt --Con index_id <> 0 evitamos traer información de
tablas que no tienen índices (Heaps)
INNER JOIN sys.indexes si
ON si.object_id = dt.object_id
AND si.index_id = dt.index_id


y Para realizar el Defrag puedes correr el siguiente script


SET NOCOUNT ON;
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @partitioncount bigint;
DECLARE @schemaname sysname;
DECLARE @objectname sysname;
DECLARE @indexname sysname;
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @frag float;
DECLARE @command varchar(8000);
IF EXISTS (SELECT name FROM sys.objects WHERE name = 'work_to_do')
DROP TABLE work_to_do;
to names.
SELECT
object_id AS objectid,
index_id AS indexid,
partition_number AS partitionnum,
avg_fragmentation_in_percent AS frag
INTO work_to_do
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED')
WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;
DECLARE partitions CURSOR FOR SELECT * FROM work_to_do;

OPEN partitions;

FETCH NEXT
FROM partitions
INTO @objectid, @indexid, @partitionnum, @frag;

WHILE @@FETCH_STATUS = 0
BEGIN;
SELECT @objectname = o.name, @schemaname = s.name
FROM sys.objects AS o
JOIN sys.schemas as s ON s.schema_id = o.schema_id
WHERE o.object_id = @objectid;

SELECT @indexname = name
FROM sys.indexes
WHERE object_id = @objectid AND index_id = @indexid;

SELECT @partitioncount = count (*)
FROM sys.partitions
WHERE object_id = @objectid AND index_id = @indexid;

and rebuilding
IF @frag < 30.0
BEGIN;
SELECT @command = 'ALTER INDEX [' + @indexname + '] ON ' + @schemaname +
'.[' + @objectname + '] REORGANIZE';
IF @partitioncount > 1
SELECT @command = @command + ' PARTITION=' + CONVERT (CHAR,
@partitionnum);

EXEC (@command);
END;

IF @frag >= 30.0
BEGIN;
SELECT @command = 'ALTER INDEX [' + @indexname +'] ON ' + @schemaname +
'.[' + @objectname + '] REBUILD';
IF @partitioncount > 1
SELECT @command = @command + ' PARTITION=' + CONVERT (CHAR,
@partitionnum);

EXEC (@command);
END;
PRINT 'Executed ' + @command;

FETCH NEXT FROM partitions INTO @objectid, @indexid, @partitionnum, @frag;
END;
CLOSE partitions;
DEALLOCATE partitions;

IF EXISTS (SELECT name FROM sys.objects WHERE name = 'work_to_do')
DROP TABLE work_to_do;
GO


Saludos
Jose Luis



"DarthSidious" escribió en el
mensaje de noticias:
> buenos dias, estoy intentando desfragmentar el archivo de una base de
> datos
> que pesa 60 GB, y esta hubicado en un disco con capacidad de 100GB, por
> consecuencia tengo solo 40GB libres. Paro los servicios de sql 2000, y
> luego
> pongo a desfragmentar pero nunca desframenta nada. Solo dice que algunos
> archivos no pudieron ser desfragmentados, y como es es el unico que hay en
> ese disco no hizo nada jeje.
>
> ahora, averiguando pude leer dos cosas, una que windows necesita 15% de
> espacio libre para desfragentar, y otra que tiene que tener, en espacio
> libre, 1.5 veces la cantidad de espacio ocupado.
>
> Es esto asi? para desfragentar un archivo de 60GB tengo que tener libres
> al
> menos 90 GB ???? como solucionan esto con bases de datos mas grandes?
>
> gracias!!

Respuesta Responder a este mensaje
#5 Eduardo De Guglielmo
08/09/2008 - 23:42 | Informe spam
Ante todo un saludo, quisiera preguntar que tan seguro es su script sr Jose
Luis Cocha (asumo que lo ha ejecutado antes pero quisiera verificarlo). A
parte de cambiar "<<Aqui colocar el nombre de tu BD>>" y quitar el
comentario "--Con index_id <> 0 evitamos traer información de tablas que no
tienen índices (Heaps)". que otra cosa deberia cambiar.
Y que riesgos corro al correr el segundo scrip.

Le agradesco de antemano toda la ayuda que me pueda prestar en ese sentido.

"Jose Luis Cocha" wrote:

Primero que nada determina si tu problema de crecimiento es la fragmentacion
de indices. Por otro lado debes verificar tu informacion o si quiza debes
depurar tus registros mas antiguos.

Usa estos script que te envio .
SELECT OBJECT_NAME(dt.object_id),si.name, dt.avg_fragmentation_in_percent,
dt.avg_page_space_used_in_percent
FROM
(SELECT object_id, index_id, avg_fragmentation_in_percent,
avg_page_space_used_in_percent
FROM sys.dm_db_index_physical_stats (DB_ID('<<Aqui colocar el nombre de tu
BD>>'), NULL, NULL, NULL, 'DETAILED')
WHERE index_id <> 0) as dt --Con index_id <> 0 evitamos traer información de
tablas que no tienen índices (Heaps)
INNER JOIN sys.indexes si
ON si.object_id = dt.object_id
AND si.index_id = dt.index_id


y Para realizar el Defrag puedes correr el siguiente script


SET NOCOUNT ON;
DECLARE @objectid int;
DECLARE @indexid int;
DECLARE @partitioncount bigint;
DECLARE @schemaname sysname;
DECLARE @objectname sysname;
DECLARE @indexname sysname;
DECLARE @partitionnum bigint;
DECLARE @partitions bigint;
DECLARE @frag float;
DECLARE @command varchar(8000);
IF EXISTS (SELECT name FROM sys.objects WHERE name = 'work_to_do')
DROP TABLE work_to_do;
to names.
SELECT
object_id AS objectid,
index_id AS indexid,
partition_number AS partitionnum,
avg_fragmentation_in_percent AS frag
INTO work_to_do
FROM sys.dm_db_index_physical_stats (DB_ID(), NULL, NULL , NULL, 'LIMITED')
WHERE avg_fragmentation_in_percent > 10.0 AND index_id > 0;
DECLARE partitions CURSOR FOR SELECT * FROM work_to_do;

OPEN partitions;

FETCH NEXT
FROM partitions
INTO @objectid, @indexid, @partitionnum, @frag;

WHILE @@FETCH_STATUS = 0
BEGIN;
SELECT @objectname = o.name, @schemaname = s.name
FROM sys.objects AS o
JOIN sys.schemas as s ON s.schema_id = o.schema_id
WHERE o.object_id = @objectid;

SELECT @indexname = name
FROM sys.indexes
WHERE object_id = @objectid AND index_id = @indexid;

SELECT @partitioncount = count (*)
FROM sys.partitions
WHERE object_id = @objectid AND index_id = @indexid;

and rebuilding
IF @frag < 30.0
BEGIN;
SELECT @command = 'ALTER INDEX [' + @indexname + '] ON ' + @schemaname +
'.[' + @objectname + '] REORGANIZE';
IF @partitioncount > 1
SELECT @command = @command + ' PARTITION=' + CONVERT (CHAR,
@partitionnum);

EXEC (@command);
END;

IF @frag >= 30.0
BEGIN;
SELECT @command = 'ALTER INDEX [' + @indexname +'] ON ' + @schemaname +
'.[' + @objectname + '] REBUILD';
IF @partitioncount > 1
SELECT @command = @command + ' PARTITION=' + CONVERT (CHAR,
@partitionnum);

EXEC (@command);
END;
PRINT 'Executed ' + @command;

FETCH NEXT FROM partitions INTO @objectid, @indexid, @partitionnum, @frag;
END;
CLOSE partitions;
DEALLOCATE partitions;

IF EXISTS (SELECT name FROM sys.objects WHERE name = 'work_to_do')
DROP TABLE work_to_do;
GO


Saludos
Jose Luis



"DarthSidious" escribió en el
mensaje de noticias:
> buenos dias, estoy intentando desfragmentar el archivo de una base de
> datos
> que pesa 60 GB, y esta hubicado en un disco con capacidad de 100GB, por
> consecuencia tengo solo 40GB libres. Paro los servicios de sql 2000, y
> luego
> pongo a desfragmentar pero nunca desframenta nada. Solo dice que algunos
> archivos no pudieron ser desfragmentados, y como es es el unico que hay en
> ese disco no hizo nada jeje.
>
> ahora, averiguando pude leer dos cosas, una que windows necesita 15% de
> espacio libre para desfragentar, y otra que tiene que tener, en espacio
> libre, 1.5 veces la cantidad de espacio ocupado.
>
> Es esto asi? para desfragentar un archivo de 60GB tengo que tener libres
> al
> menos 90 GB ???? como solucionan esto con bases de datos mas grandes?
>
> gracias!!

email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida