“Conocimiento software>Software de base de datos

Cómo desfragmentar una base de datos MSSQL

2011/6/17
A fragmentación base de datos se produce cuando el orden lógico del índice de base de datos no coincide con la distribución física de los datos en el disco . Como los cambios de datos dentro de la base de datos , las tablas de índice de la base de datos se dispersan por todo el disco . Aumenta el tiempo que necesita para acceder a los datos , lo que resulta en una disminución del rendimiento de aplicaciones. Los comandos de consola de base de datos MSSQL permiten reconstruir o desfragmentar índices. Es necesario utilizar la instrucción DBCC DBEREINDEX desfragmentar un índice de base de datos MSSQL . Instrucciones
1

clic en el botón " Inicio" de Windows y seleccione " Todos los programas". Haz click para ampliar Los Sims 2

Introduzca las siguientes sentencias SQL en la ventana de consola " Consola de administración de SQL . " :

SET NOCOUNT ON;

DECLARE @ nombre_tabla varchar ( 255 ) ;

DECLARE @ execstr varchar ( 400 ) ;

DECLARE @ objectid int ;

DECLARE @ indexid int ;

DECLARE @ frag decimal ;

DECLARE @ MaxFrag decimal;

SELECT @ MaxFrag = 30,0 ; ' . '

DECLARE CURSOR PARA tablas

SELECT TABLE_SCHEMA + + TABLE_NAME

DE INFORMATION_SCHEMA.TABLES

DONDE TABLE_TYPE = ' BASE TABLE' ;

CREATE TABLE # fraglist (

ObjectName char ( 255 ) ,

ObjectId int ,

IndexName char ( 255 ) ,

IndexId int ,

Lvl int ,

CountPages int ,

CountRows int ,

MinRecSize int ,

MaxRecSize int ,

AvgRecSize int ,

ForRecCount int ,

Extensión int ,

ExtentSwitches int ,

AvgFreeBytes int ,

AvgPageDensity int ,

ScanDensity decimal,

BestCount int ,
< p> ActualCount int ,

decimal LogicalFrag ,

ExtentFrag decimal) ;

mesas abiertas ;

TRAER DESPUÉS

DE tablas

EN @ nombre_tabla ;

MIENTRAS @ @ FETCH_STATUS = 0

COMENZAR

INSERT INTO # fraglist

EXEC ( ' DBCC SHOWCONTIG ( '' ' + @ nombre de tabla + ''' )

CON RÁPIDA , TABLERESULTS , ALL_INDEXES , NO_INFOMSGS ');

TRAER DESPUÉS

DE tablas

EN @ nombre_tabla ;

END;
mesas cerca

;

DEALLOCATE tablas ;

índices DECLARE CURSOR PARA SELECCIONAR

ObjectName , ObjectId , IndexId , LogicalFrag

desde # fraglist

DONDE LogicalFrag > = @ MaxFrag

Y INDEXPROPERTY ( ObjectId , IndexName , ' IndexDepth ' ) > 0 ;

índices abiertos ;

TRAER DESPUÉS DE

índices

EN @ nombre de tabla , @ objectid , indexid @ , @ frag ;

MIENTRAS @ @ FETCH_STATUS = 0

COMENZAR

PRINT ' Ejecutar DBCC INDEXDEFRAG ( 0 , ' + RTRIM (@ nombre de tabla ) + ',

' + RTRIM (@ indexid ) + ' ) - la fragmentación actualmente '

RTRIM ( CONVERT ( varchar ( 15 ) , @ frag )) + '% ' ;

SELECT @ execstr =' DBCC INDEXDEFRAG ( 0 , '+ RTRIM (@ objectid ) + ',

' + RTRIM (@ indexid ) + ' )';

EXEC (@ execstr ) ;

TRAER DESPUÉS DE

índices

EN @ nombre de tabla , @ objectid , indexid @ , @ frag ;

END;
índices CERRAR

;

DEALLOCATE índices ;
< p > TABLE DROP # fraglist ; .

GO
3

Haga clic en " archivo" y seleccione " Ejecutar" para desfragmentar el índice de base de datos MSSQL


Software de base de datos
¿La determinación de los requisitos de la base de datos es parte un proceso conocido como desarrollo de sistemas?
Cómo copiar los datos de acceso de una tabla vinculada a una tabla existente
Cómo acceder a un informe de código de barras
Cómo crear bloqueos en DB2
Tipos de datos de T -SQL
¿Qué medidas se pueden tomar para evitar el problema de actualización perdida en los sistemas de gestión de bases de datos?
¿Qué es un campo en la base de datos?
Cómo construir una base de datos con MS Access
Conocimiento de la computadora © http://www.ordenador.online