답변:
채우기 비율은 인덱스를 만들거나 다시 작성할 때만 작동합니다. 이러한 조작 중에 채워지는 리프 레벨 페이지의 색인에 대한 소비량입니다. ( 영향을받는 페이지 수준에 대한 자세한 설명은 아래 참고 사항을 참조하십시오 )
데이터에 대한 DML 명령이있을 때 ( INSERT
, UPDATE
, 및 / 또는 DELETE
), 그것은 해당 영향을받는 인덱스에 발생합니다. 즉, 20 % 채워진 페이지가 있고 해당 페이지에 데이터를 삽입하면 페이지에 데이터의 20 % 이상이 포함됩니다 (예를 들어 35 %라고합시다). 다른 인서트를 수행하십시오. 이제 페이지가 64 % 채워졌습니다. 색인을 다시 빌드하면 리프 레벨 페이지에 지정한 공간 백분율 (또는 서버의 기본값)이 상대적으로 포함됩니다.
( 참고 지정하지 않는 경우, PAD_INDEX
수 ON
, 채우기 비율은 리프 수준 페이지에 적용됩니다.하지만 설정 한 경우 PAD_INDEX = ON
, 채우기 비율은 인덱스의 중간 수준 페이지에 대한 고려됩니다. 기본값은OFF
)
채우기 비율을 조정하는 이유는 기본 100/0을 사용하는 대신 데이터를 삽입하거나 업데이트 할 때 페이지 분할을 최소화하기 위해서입니다. 그러나 명심하십시오. 무료는 없습니다. 채우기 비율이 낮을수록 일반적으로 더 많은 공간 데이터가 사용됩니다. 인덱스에 대해 80 %의 여유 페이지 공간을 유지하면 비교적 많은 양의 디스크 공간이 소비되어 더 많은 읽기가 발생할 수 있습니다.
내 이해에서, 데이터가 삽입되면 페이지에 대략 20 %의 데이터가있을 것입니다. 그러나 데이터가 업데이트되면 색인을 20 % 이상 확장하여 데이터를 채우고 페이지 분할을 생성 할 수 있습니다.
데이터가 삽입되면 해당 페이지의 해당 인덱스에 삽입됩니다. 이로 인해 페이지 소비량이 채우기 비율보다 높아질 수 있습니다.
새 데이터가 전체 색인 페이지에 추가되면 페이지 분할이 발생합니다. 그런 다음 SQL Server는 페이지를 분할하여 전체 페이지의 데이터 절반을 새 페이지로 나눕니다. 다시 한 번 채우기 비율이 적용되지 않습니다.
채우기 비율을 낮추는 합법적 인 이유는 페이지 분할을 최소화하여 인덱스 페이지 조각화를 최소화하기위한 것입니다.