Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este tema se describe qué es el factor de relleno y cómo especificar un valor de factor de relleno en un índice de SQL Server 2014 mediante SQL Server Management Studio o Transact-SQL.
La opción fill-factor se proporciona para ajustar el rendimiento y el almacenamiento de datos del índice. Cuando se crea o se vuelve a generar un índice, el valor de factor de relleno determina el porcentaje de espacio en cada página de nivel hoja que se va a rellenar con datos, reservando el resto en cada página como espacio libre para el crecimiento futuro. Por ejemplo, especificar un valor de factor de relleno de 80 significa que el 20 por ciento de cada página de nivel hoja quedará vacío, lo que proporciona espacio para la expansión del índice a medida que se agregan datos a la tabla subyacente. El espacio vacío está reservado entre las filas de índice en lugar de al final del índice.
El valor de factor de relleno es un porcentaje de 1 a 100 y el valor predeterminado de todo el servidor es 0, lo que significa que las páginas de nivel hoja se rellenan a la capacidad.
Nota:
Los valores de factor de relleno 0 y 100 son los mismos en todos los aspectos.
En este tema
Antes de comenzar:
Para especificar un factor de relleno en un índice, use:
Antes de empezar
Consideraciones de rendimiento
Divisiones de página
Un valor de factor de relleno elegido correctamente puede reducir las posibles divisiones de página proporcionando espacio suficiente para la expansión del índice a medida que se agregan datos a la tabla subyacente. Cuando se agrega una nueva fila a una página de índice completa, el motor de base de datos mueve aproximadamente la mitad de las filas a una nueva página para hacer espacio para la nueva fila. Esta reorganización se conoce como división de páginas. Una división de páginas ofrece espacio para nuevos registros, pero puede tardar tiempo en realizar y es una operación que consume muchos recursos. Además, puede causar fragmentación que provoca un aumento de las operaciones de E/S. Cuando se producen divisiones de página frecuentes, el índice se puede volver a generar mediante un valor de factor de relleno nuevo o existente para redistribuir los datos. Para obtener más información, vea Reorganizar y volver a generar índices.
Aunque un valor de factor de relleno distinto de cero bajo puede reducir el requisito de dividir páginas a medida que crece el índice, el índice requerirá más espacio de almacenamiento y puede reducir el rendimiento de lectura. Incluso para una aplicación orientada a muchas operaciones de inserción y actualización, el número de lecturas de base de datos suele ser desajustar las escrituras de la base de datos por un factor de 5 a 10. Por lo tanto, especificar un factor de relleno distinto del valor predeterminado puede reducir el rendimiento de lectura de la base de datos por una cantidad inversamente proporcional a la configuración del factor de relleno. Por ejemplo, un valor de factor de relleno de 50 puede hacer que el rendimiento de lectura de la base de datos disminuya dos veces. El rendimiento de lectura se reduce porque el índice contiene más páginas, por lo que aumenta las operaciones de E/S de disco necesarias para recuperar los datos.
Agregar datos al final de la tabla
Un factor de relleno distinto de cero distinto de 0 o 100 puede ser bueno para el rendimiento si los nuevos datos se distribuyen uniformemente en toda la tabla. Sin embargo, si todos los datos se agregan al final de la tabla, no se rellenará el espacio vacío en las páginas de índice. Por ejemplo, si la columna de clave de índice es una columna IDENTITY, la clave de las nuevas filas siempre aumenta y las filas de índice se agregan lógicamente al final del índice. Si las filas existentes se actualizarán con datos que a largon el tamaño de las filas, use un factor de relleno de menos de 100. Los bytes adicionales de cada página ayudarán a minimizar las divisiones de página causadas por una longitud adicional en las filas.
Seguridad
Permisos
Requiere el permiso ALTER en la tabla o vista. El usuario debe ser miembro del rol fijo de servidor sysadmin o de los roles fijos de base de datos db_ddladmin y db_owner.
Uso de SQL Server Management Studio
Para especificar un factor de relleno mediante el Diseñador de tablas
En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla en la que desea especificar el factor de relleno de un índice.
Haga clic en el signo más para expandir la carpeta Tablas .
Haga clic con el botón derecho en la tabla en la que desea especificar el factor de relleno de un índice y seleccione Diseño.
En el menú Diseñador de tablas , haga clic en Índices o claves.
Seleccione el índice con el factor de relleno que desea especificar.
Expanda Especificación de relleno, seleccione la fila Factor de relleno y escriba el factor de relleno que desee en la fila.
Haga clic en Cerrar.
En el menú Archivo , seleccione Guardarnombre_tabla.
Para especificar un factor de relleno en un índice mediante el Explorador de objetos
En el Explorador de objetos, haga clic en el signo más para expandir la base de datos que contiene la tabla en la que desea especificar el factor de relleno de un índice.
Haga clic en el signo más para expandir la carpeta Tablas .
Haga clic en el signo más para expandir la tabla en la que desea especificar el factor de relleno de un índice.
Haga clic en el signo más para expandir la carpeta Índices .
Haga clic con el botón derecho en el índice con el factor de relleno que desea especificar y seleccione Propiedades.
Debajo de Seleccionar una página, seleccione Opciones.
En la fila Factor de relleno, introduzca el factor de relleno que desea.
Haz clic en Aceptar.
Uso de Transact-SQL
Para especificar un factor de relleno en un índice existente
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar. En el ejemplo se vuelve a generar un índice existente y se aplica el factor de relleno especificado durante la operación de recompilación.
USE AdventureWorks2012; GO -- Rebuilds the IX_Employee_OrganizationLevel_OrganizationNode index -- with a fill factor of 80 on the HumanResources.Employee table. ALTER INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee REBUILD WITH (FILLFACTOR = 80); GO
Otra manera de especificar un factor de relleno en un índice
En el Explorador de objetos, conéctese a una instancia del Motor de base de datos.
En la barra de Estándar, haga clic en Nueva consulta.
Copie y pegue el siguiente ejemplo en la ventana de consulta y haga clic en Ejecutar.
USE AdventureWorks2012; GO /* Drops and re-creates the IX_Employee_OrganizationLevel_OrganizationNode index on the HumanResources.Employee table with a fill factor of 80. */ CREATE INDEX IX_Employee_OrganizationLevel_OrganizationNode ON HumanResources.Employee (OrganizationLevel, OrganizationNode) WITH (DROP_EXISTING = ON, FILLFACTOR = 80); GO
Para más información, vea ALTER INDEX (Transact-SQL).