인덱스 REBUILD가 인덱스 조각화를 줄이지 않는 이유는 무엇입니까?


30

ALTER INDEX REBUILD를 사용하여 인덱스 조각화를 제거했습니다. 경우에 따라 REBUILD는이 조각화를 제거하지 않는 것 같습니다. REBUILD가 조각화를 제거하지 않는 이유는 무엇입니까? 이것은 특히 작은 지수에서 발생하는 것으로 보입니다.


답변:


39

인덱스가 매우 작은 경우 (8 페이지 미만이라고 생각) 혼합 범위를 사용합니다. 따라서 주택 범위에는 여러 색인의 페이지가 포함되므로 여전히 조각화가 남아있는 것처럼 보입니다.

이 때문에 조각화가 일반적으로 무시할 수있는 작은 인덱스에서는 실제로 특정 페이지 임계 값으로 인덱스를 다시 작성해야합니다. 최소 1000 페이지 인 조각난 인덱스를 다시 작성하는 것이 가장 좋습니다 .


34

이는 매우 큰 인덱스에서도 발생할 수 있습니다.

약 700m 행이있는 테이블에 약 30 % 미만의 조각 모음을 할 수없는 인덱스가 있습니다. 이 문제는 데이터베이스 내부에 인덱스를 연속적으로 배열하기에 충분한 여유 공간이 부족했습니다.

조각 모음을하지 않는 매우 큰 인덱스를 해결하려면 최상의 솔루션은 새 데이터베이스의 크기를 미리 조정하고 모든 개체를 해당 DB로 이동 한 다음 인덱스를 다시 만드는 것입니다.


1

나는이 문제를 언젠가는 JNK처럼 고생했지만 디스크의 여유 공간과 물리적 조각화가 계속되었습니다. 그러나 SSD SAN에서 어떻게해야합니까?

이제 index_level = 0 만 포함하는 것이 좋습니다. 이것이 Ola Hallengren의 대본에서 수행되는 방식입니다.

또 다른 개선은

 REBUILD With (maxdop = 1)

이런 식으로 최대 개선을 보장합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.