SharePoint Database Index fill factor (채우기 비율) 설정 방법

[주의 사항]

본 블로그에 게시된 정보의 내용 (첨부 문서, 링크 등)은 작성일 현재 기준이며 예고없이 변경 될 수 있습니다.

또한, 참고용으로만 제공됨으로 Microsoft에 책임이 없음을 알려 드립니다. 반드시 적용 전 충분한 테스트를 진행하시기 바랍니다.

 

[요약]

SharePoint Database에 대한 Indedx Fill Factor (채우기 비율)

 

[원인 또는 해결 방법]

SQL Database의 인덱스 데이터 저장소 성능 개선을 위해 Indedx Fill Factor  (채우기 비율)을 설정할 수 있습니다.

인덱스를 만들거나 다시 작성할 때에 이 채우기 비율 값(1-100)에 따라 각 리프 수준 페이지에서 데이터를 채울 수 있는 공간의 비율이 결정되고 나머지 공간은 이후 확장을 위해 예약됩니다.

일반적으로 삽입 및 업데이트 작업이 많은 응용 프로그램에서도 데이터베이스 읽기 횟수가 데이터베이스 쓰기 횟수보다 10 대 5 정도로 훨씬 많이 일어나기 때문에 일반적인 SQL Database의 Index Fill Factor (인덱스 채우기 비율) 값은 0 (각 페이지를 100% 데이터로 채움)으로 설정합니다.

기본값 이외의 채우기 비율을 지정하면 채우기 비율 설정에 반비례하는 양만큼 데이터베이스 읽기 성능이 저하됩니다. 또한, 인덱스에 더 많은 페이지가 포함되므로 읽기 성능이 저하되어 데이터 검색에 필요한 디스크 IO 작업이 늘어납니다.

다만, SharePoint (2010~)의 경우에는 내부 테스트를 통해 채우기 비율이 80%일 때 가장 효율적으로 작동하는 것으로 확인되었습니다. (확장 지원 및 조각화 최소화)

Index Fill Factor 를 변경하는 경우 인덱스가 다시 작성되는 동안 지정한 설정이 적용됨으로 트랜잭션 로그 사이즈가 급증 할 수 있습니다.

작업 시 로그 사용량을 확인하고 사용량이 증가하는 경우 트랜잭션 로그 백업을 통한 비우기를 진행하실 수 있습니다.

 

[Index Fill Factor  조회 스크립트]

USE [DB명]

GO 

SELECT OBJECT_NAME(OBJECT_ID) AS TABLE_NAME  ,NAME, FILL_FACTOR

FROM SYS.INDEXES

WHERE OBJECT_ID > 100

 

[Index Fill Factor 변경 방법]

인덱스의 채우기 비율 지정https://msdn.microsoft.com/ko-kr/library/ms177459.aspx 다음 쿼리문을 통해서 채우기 비율을 변경할 수 있으며, 다시 인덱스를 작성하는 동안 지정한 채우기 비율이 적용됩니다. USE [DB명];  GO   ALTER INDEX [인덱스명] ON [테이블명]REBUILD WITH (FILLFACTOR = 80);   GO 

 

[Online 모드로 작업 가능 여부]

SQL 2012 Enterprise Edition 등  Index 구성 옵션중 Online 옵션이 사용가능한 Edition이 필요하며, 온라인으로 인덱스 작업에 대한 설명 및 유의 사항은 다음을 참고하시기 바랍니다.

ONLINE 옵션을 사용하면 여러 사용자가 인덱스 작업 동안 기본 테이블이나 클러스터형 인덱스 데이터 및 모든 관련 비클러스터형 인덱스에 동시에 액세스할 수 있습니다. 예를 들어 특정 사용자가 클러스터형 인덱스를 다시 작성하는 동안 해당 사용자와 다른 사용자가 계속해서 기본 데이터를 업데이트하고 쿼리할 수 있습니다. 클러스터형 인덱스 작성 또는 다시 작성 등의 DDL(데이터 정의 언어) 작업을 오프라인으로 수행할 때 이러한 작업은 기본 데이터와 관련 인덱스에 대해 배타적 잠금을 보유합니다. 이로 인해 해당 인덱스 작업이 완료될 때까지 기본 데이터를 수정하거나 쿼리할 수 없습니다 참조 :온라인으로 인덱스 작업 수행https://msdn.microsoft.com/ko-kr/library/ms177442(v=sql.110).aspx 참조 : 온라인 인덱스 작업에 대한 지침https://msdn.microsoft.com/ko-kr/library/ms190981(v=sql.110).aspx

 

인덱스 채우기 비율 변경 시 온라인 옵션을 추가한 작업 스크립트 예시는 다음과 같습니다.

ALTER INDEX [인덱스명] ON [테이블명]REBUILD WITH (FILLFACTOR = 80, ONLINE=ON);

감사합니다.