-
인덱스 채우기 비율 (FILLFACTOR, PAD_INDEX )SQLServer 2020. 1. 14. 14:46
테스트 환경
- OS : Windows 2008 R2 DataCenter
- DBMS : SQL Server 2012 Enterprise Edition + SP4
- 참고문서 : https://docs.microsoft.com/ko-kr/previous-versions/sql/sql-server-2012/ms177459(v=sql.110)
내용
- 개요
인덱스 페이지가 가득 찬 상태에서 추가로 인덱스 데이터가 해당 인덱스 페이지에 입력되는 경우
내부적으로 인덱스 페이지를 분할 시켜야 합니다. 인덱스 페이지의 분할은 성능에 영향을 줄 수 있습니다.
인덱스 페이지 분할을 상대적으로 적게 발생 시키려면 인덱스 페이지에 데이터를 채우는 비율을 낮게 설정하면 되는데
낮게 설정하면 인덱스 페이지 IO 가 증가하고 높게 설정하면 페이지 분할 발생 확율이 증가합니다.
해당 설정과 관련된 옵션은 아래와 같습니다.
- FILLFACTOR : 인덱스 페이지 채우기 비율이며 리프 페이지에만 영향을 줍니다.
- PAD_INDEX : fillfactor 의 값을 인덱스 루트 및 넌 리프 페이지까지 영향을 주려면 해당 옵션 값을 true 로 설정합니다.
- 예제
USE AdventureWorks2012;
GO
-- 기존 인덱스에 FILLFACTOR 지정, 재작성ALTER INDEX IX_Employee_1 ON HumanResources.Employee
REBUILD WITH (FILLFACTOR = 80);
GO
-- 기존 인덱스에 FILLFACTOR, PAD_INDEX 지정, 재작성ALTER INDEX IX_Employee_1 ON HumanResources.Employee
REBUILD WITH (PAD_INDEX = ON, FILLFACTOR = 80);
GO
-- 신규 생성
CREATE INDEX IX_Employee_2 ON HumanResources.Employee (LoginID)
WITH (PAD_INDEX = ON, FILLFACTOR = 80);
GO'SQLServer' 카테고리의 다른 글
매개변수 스니핑 (with recompile) (0) 2020.01.14 오류 핸들링 (try ... catch) (0) 2020.01.14 인덱스 조각화 확인 방법 (0) 2020.01.14 columnstore 인덱스 (0) 2020.01.14 필터링된 인덱스 (0) 2020.01.14