삽입 업데이트 및 삭제를 수행하면 색인이 내부 및 외부에서 조각화됩니다.
내부 조각화는 인덱스 페이지에 여유 공간이 많기 때문에 인덱스를 검색 할 때 SQL Server에서 더 많은 페이지를 읽어야한다는 의미입니다.
외부 조각화는 인덱스 페이지가 더 이상 순서가없는 경우이므로 SQL Server는 특히 IO 용어로 인덱스를 읽으려면 더 많은 작업을 수행해야합니다.
인덱스가 너무 조각화되면 쿼리 효율성이 떨어지지 만 최악의 경우 SQL Server는 인덱스를 모두 함께 사용하지 않으므로 사실상 모든 쿼리에서 테이블 스캔 또는 클러스터 된 인덱스 스캔을 수행해야합니다. 이렇게하면 성능이 크게 저하됩니다!
인덱스를 재구성하면 SQL Server는 기존 인덱스 페이지를 사용하여 해당 연령대의 데이터를 섞습니다. 이렇게하면 내부 조각화가 완화되고 소량의 외부 조각화가 제거 될 수도 있습니다. 재 구축보다 가벼운 작업이며 항상 온라인 상태입니다.
인덱스를 다시 작성할 때 SQL Server는 실제로 인덱스 데이터를 사용하여 새로운 인덱스 페이지 집합을 사용합니다. 이렇게하면 내부 및 외부 조각화가 모두 완화되지만 더 무거운 작업이 가능하며 SQL Server 버전 및 설정에 따라 온라인 작업으로 수행 할 수 있지만 기본적으로 인덱스가 오프라인 상태가됩니다.
그러나 Rebuild 후에는 조각화가 0이 아닙니다. MAXDOP 쿼리 힌트를 사용하지 않는 한 SQL Server는 다시 작성 작업을 병렬화하고 더 많은 프로세서를 사용하면 각 프로세서 나 코어가 개별적으로 인덱스의 섹션이나 조각을 다시 작성하기 때문에 더 많은 조각화가 발생할 수 있습니다. 서로. 이는 최상의 조각화 수준과 인덱스를 다시 작성하는 데 걸리는 시간 사이의 균형입니다. 거의 0 조각화의 경우 MAXDOP 1을 사용하고 결과를 TempDB에서 정렬하십시오.