viernes, 20 de octubre de 2017

SQL Server DBCC DBREINDEX

Comando DBCC DBREINDEX

Ya he mencionado, cuando vimos los Comandos DBCC de mantenimiento, que este comando vuelve a generar uno o varios índices para una tabla en la base de datos especificada. Sin embargo, se ha indicado por parte de Microsoft que este comando no se utilice en nuevos trabajos de desarrollo y se modifique lo antes posible las aplicaciones que actualmente utilizan el comando. Se sugiere que se use ALTER INDEX en su lugar.

No se admite el uso de este comando DBCC DBREINDEX en los siguientes objetos:

·         Tablas del sistema

·         Índices espaciales

·         índices de almacén de columnas optimizados de memoria xVelocity

La sintaxis de este comando en su forma más simple es:

USE database_name;
GO
DBCC DBREINDEX ([table_name]);

En el comando se indica que se lleve a cabo la generación de todos los índices de la tabla denominada table_name, es importante recordar que los nombres de tablas deben seguir las reglas para los identificadores.

Es importante mencionar, que si bien muchos comandos DBCC registran actividad en el Log de Microsoft SQL Server, este  comando no genera una entrada ya que no afecta el funcionamiento de la base de datos.

La sintaxis que se usa más a menudo es:

USE database_name;
GO
DBCC DBREINDEX ([table_name], index_name);

En el comando se indica el nombre de la tabla y el nombre del índice que se va a recrear. 

Existen algunos argumentos opcionales que pueden ser utilizados con el comando, estos son:

Fillfactor
Es el porcentaje de espacio de cada página de índice que se utiliza para almacenar los datos cuando el índice se crea o se vuelve a generar.  El valor de FILLFACTOR reemplaza el factor de relleno cuando se creó el índice, se convierta en el nuevo valor predeterminado para el índice y para cualquier otro índice no clúster vuelve a generar porque se vuelve a generar un índice agrupado.
WITH NO_INFOMSGS
Suprime todos los mensajes informativos con niveles de gravedad entre 0 y 10.


Se hace necesario indicar que cuando fillfactor es 0, el comando utiliza el valor de factor de relleno para el índice que se especificó la última vez. Este valor se almacena en la vista de catálogo sys.indexes. Si fillfactor se especifica, table_name y index_name, ambos, deben especificarse, es posible indicar que se aplique para todos los índices indicando ‘’ en lugar de index_name. Si fillfactor no se especifica, se utiliza el factor de relleno predeterminado que es 100.

Ejemplos de DBCC CLEANTABLE


Mostraré algunos ejemplos de uso de este comando:

USE db1;
GO
DBCC DBREINDEX ('Sche1.Table1', index_name, 0) WITH NO_INFOMSGS;

Este comando vuelve a generar el índice denominado index_name de la table indicada, tomando el valor de fillfactor en 0, equivalente a 100, sin emitir mensajes.

USE db1;
GO
DBCC DBREINDEX ('Sche1.Table1', '', 80);

Este comando vuelve a generar todos los índices de la tabla indicada, tomando el valor de fillfactor en 80.

Comentarios


Al permitir que los índices se vuelvan a generar dinámicamente, los índices que implementen restricciones PRIMARY KEY o UNIQUE se pueden volver a generar sin tener que quitar y volver a crear las restricciones. Esto significa que un índice puede volver a generarse sin conocer la estructura de una tabla ni sus restricciones.

No hay comentarios.:

Publicar un comentario