Cual es mejor uso de FillFactor

07/04/2009 - 00:40 por new.microsoft.com | Informe spam
amigos,

Que gano aplicando al indice un Fillfactor o mejor dicho en que me
beneficia??


CREATE TABLE T1 (
ID bigint PRIMARY KEY WITH FILLFACTOR = 90,
SomeText char(300) NOT NULL
)
GO


Nota:
Nunca Use Fillfactor y no he tenido problemas.

Dany Acosta
 

Leer las respuestas

#1 Alejandro Mesa
07/04/2009 - 02:47 | Informe spam
El valor de fillfactor, es el el porciento que quieres ocupar de cada pagina
de data o nodo hoja de un indice. Cada pagina ocupa 8K, y tu especificas
cuanto quieres ocupar durante la creacion y/o re-construccion.

Para que?

Pues para permitir futuras actualizaciones (insert / update) sin que la
pagina se llene y se tenga que partir para acomodar la nueva data, pues con
el tiempo estas particiones causan fragmentacion (data dispersa en varias
paginas que no siguen un orden de acuerdo al indice) y lo cual influye en la
rapidez con que se lee la data desde disco.

En tu caso de ejemplo, supongamos que como promedio el campo SomeText es de
120 caracteres, asi que cada campo puede ser modificado en un futuro y llegar
hasta 300. Si al principio habian 5000 filas por pagina, cuando esta columna
cambie y ocupe mayor espacio, entonces las 5000 filas ya no cabran en una
sola pagina y SQL Server tendra que partir esta pagina para acomodar la nueva
data. El particionamiento puede ser en dos o mas paginas, de acuerdo a la
data que se este insertando o actualizando. Si la pagina siguiente, de
acuerdo al indice, ya esta ocupada entonces se tendra que usar una pagina
distante y cuando se lea la data, esta no se podra leer secuencialmente, sino
que habra que dar saltos y esos saltos hacen la lectura mas lenta.

Por que un ingreso debe ir hacia una pagina en especifico?

Bueno eso depende de los indices que se tengan, en especial los clustered.
Si tienes un grupo de filas, cuya data se encuentra en la pagina X, entonces
la continuacion despues de la ultima llave deberia estar en la pagina X + 1.
cuando esto no se cumple, entonces tenemos gragmentacion de la data y como no
se pueden leer grupos consecutivos de paginas sino que habra que dar saltos,
entonces la lectura sera mas lenta.

Este factor tambien se puede enforzar hacia los nodos intermedios de un
indice, si usas la opcion PAD_INDEX en conjunto con FILLFACTOR. Chequea la
sentencia "create index" en los BOL para mas info, asi como la estructura de
los indices.


AMB

"new.microsoft.com" wrote:


amigos,

Que gano aplicando al indice un Fillfactor o mejor dicho en que me
beneficia??


CREATE TABLE T1 (
ID bigint PRIMARY KEY WITH FILLFACTOR = 90,
SomeText char(300) NOT NULL
)
GO


Nota:
Nunca Use Fillfactor y no he tenido problemas.

Dany Acosta


Preguntas similares