“Conocimientos software>Software de base de datos

Cómo desfragmentar una base de datos MSSQL

2015/7/1
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
Oracle DBA de formación
¿Qué es una instancia de Oracle
Diferencia entre SQL y Oracle
Cómo interpretar tablas de contingencia con Chi cuadrado
Cómo filtrar los datos para SQL
Cómo cambiar el color del texto dentro de un campo con SSRS
Cómo acceder a la ComboBox Formato de color rojo
Cómo crear un sinónimo en T -SQL
Conocimientos Informáticos © http://www.ordenador.online