Share via


Project Server 2010 데이터베이스의 인덱스 조각 모음

 

적용 대상: Project Server 2010

마지막으로 수정된 항목: 2016-11-30

데이터베이스 유지 관리 작업은 Transact-SQL 명령 또는 데이터베이스 유지 관리 마법사를 실행하여 수행할 수 있습니다. 이 문서에서는 두 가지 방법 모두에 대해 자세히 설명합니다.

Microsoft Project Server 2010 데이터베이스에 대해 권장되는 데이터베이스 유지 관리 작업은 다음과 같습니다.

  • 데이터베이스 무결성 검사

  • 인덱스를 다시 구성하거나 다시 작성하여 조각 모음

  • 서버의 채우기 비율 설정

  • 데이터베이스 크기를 모니터링하여 데이터베이스 미리 확장 또는 축소

  • 기록 정리

  • 통계 업데이트

인덱스를 다시 구성하거나 다시 작성하여 조각 모음

데이터베이스의 공간을 논리적 및 물리적으로 할당할 때 저장소 영역이 너무 많이 분산되어 비효율적이거나, 물리적으로 연속되지 않거나, 너무 많은 조각이 있는 경우 조각화가 발생합니다. 테이블에 대해 삽입, 업데이트 또는 삭제 작업을 여러 차례 수행하면 조각화가 발생할 수 있습니다. 테이블이 조각화되면 해당 테이블에 정의된 인덱스도 조각화됩니다.

Project Server 2010에서는 GUID 유형을 클러스터링 키로 사용하여 동일한 데이터 페이지에 대해 경합을 하는 동시 삽입(삽입 핫스폿)을 방지합니다. 그러나 이로 인해 테이블 및 인덱스가 조각화될 수 있습니다. B-트리의 끝이 아닌 어디에나 새 레코드를 삽입할 수 있는 경우 조각화가 발생할 수 있으며, 그러면 페이지가 분할(인덱스 및 데이터)되고 조각이 생성될 가능성이 높아집니다. Project UID를 사용하는 복합 키를 클러스터링하여 데이터 페이지에 관련 데이터가 포함되도록 하면 조각화 가능성을 낮출 수 있지만, 특히 대규모 Project Server 2010 배포에서는 큰 테이블에 대해 정기적으로 조각 모음을 수행하면 성능을 높일 수 있습니다.

시간이 지남에 따라 데이터베이스 조각화로 인해 불필요한 디스크 작업이 수행되어 성능이 저하되고 공간 사용 효율성도 떨어질 수 있습니다. 조각화 정도를 낮추고 조각화 발생 속도를 최소화하려면 비즈니스 요구 사항과 데이터베이스 아키텍처를 기반으로 하여 콘텐츠 데이터베이스 크기를 최대한 크게 수동 설정합니다. 예를 들어 콘텐츠 데이터베이스를 100GB로 제한하려면 콘텐츠 데이터베이스를 만든 후에 SQL Server Management Studio에서 크기를 100GB로 설정합니다.

테이블에 대해 조각 모음을 수행할 수도 있지만, 데이터베이스 성능을 향상시키는 데는 인덱스 조각 모음이 보다 효과적이며 속도도 훨씬 빠릅니다. 이 문서에서는 인덱스 조각 모음 방법에 대해서만 설명합니다.

데이터베이스 조각화 유지 관리 계획을 구현하기 전에 가장 조각화 정도가 심한 테이블 및 인덱스를 파악한 다음 해당 인덱스를 다시 작성하거나 다시 구성하는 유지 관리 계획을 작성합니다.

sys.dm_db_index_physical_stats를 사용한 조각화 측정

sys.dm_db_index_physical_stats 동적 관리 보기를 사용하여 지정된 테이블이나 보기의 인덱스에 대한 조각화를 파악합니다.

조각화를 측정하는 경우 avg_fragmentation_in_percent 열을 모니터링하는 것이 좋습니다. 최고의 성능을 유지하려면 avg_fragmentation_in_percent의 값이 최대한 0에 가까운 것이 좋습니다. 일반적으로는 0~10% 사이의 값이면 적절합니다.

sys.dm_db_index_physical_stats를 사용하는 방법에 대한 자세한 내용은 sys.dm_db_index_physical_stats(Transact-SQL)(https://technet.microsoft.com/ko-kr/library/ms188917.aspx)를 참조하십시오.

데이터베이스의 조각화 줄이기

데이터베이스의 조각화를 줄이는 방법에 대한 자세한 내용은 Microsoft SharePoint 2010 제품 데이터베이스 유지 관리 백서의 조각화 측정 및 줄이기 섹션을 참조하십시오. 이 백서는 SharePoint Server 2010에 대한 데이터베이스 유지 관리에서 다운로드할 수 있습니다.

특정 테이블 및 해당 인덱스의 조각화 줄이기

전체 데이터베이스가 아닌 특정 테이블에 연결된 인덱스에 대해 조각 모음을 수행하려면 해당 인덱스를 다시 작성하거나 다시 구성하면 됩니다. 자세한 내용은 클러스터형 인덱스 구조(https://technet.microsoft.com/ko-kr/library/ms177443.aspx)를 참조하십시오.

인덱스를 다시 구성한다는 것은 인덱스 리프 수준을 다시 구성하는 것입니다. 인덱스를 다시 구성하면 클러스터형 및 테이블과 보기의 비클러스터형 인덱스가 조각 모음 및 압축되며, 인덱스 검색 성능을 크게 높일 수 있습니다. 다시 구성은 항상 온라인으로 수행되므로 사용자가 기본 테이블을 사용할 수 있습니다.

인덱스를 다시 작성한다는 것은 동일한 열, 인덱스 유형, 고유성 특성 및 정렬 순서를 사용하여 인덱스를 다시 만드는 것입니다. 인덱스를 다시 작성하면 인덱스 검색 및 찾기 성능이 향상됩니다. 테이블을 사용하여 인덱스를 오프라인 또는 온라인에서 다시 작성할 수 있습니다.

인덱스의 조각화 수준에 따라 조각 모음에 사용하는 방법 및 인덱스를 온라인 상태로 유지할 수 있는지 아니면 오프라인으로 전환해야 하는지가 결정됩니다.

조각화 수준 조각 모음 방법

10%까지

다시 구성(온라인)

10–75%

다시 작성(온라인)

75% 이상

다시 작성(오프라인)

Microsoft SharePoint Server 2010 데이터베이스에 대해서는 DROP INDEX 및 CREATE INDEX 명령을 사용할 수 없습니다.

ALTER INDEX 사용

데이터베이스 관리자는 ALTER INDEX를 사용하여 기존 테이블 또는 보기 인덱스에 대해 유지 관리 작업을 수행할 수 있습니다. 이 명령을 통해 인덱스를 비활성화/다시 작성/다시 구성하거나, 원하는 경우 인덱스에서 옵션을 설정할 수 있습니다.

대부분의 경우에는 오프라인에서 인덱스를 다시 작성해도 성능상 큰 차이가 없기 때문에 데이터베이스가 온라인 상태일 때 인덱스를 다시 작성할 수 있습니다. 그러나 인덱스를 다시 작성하는 동안에는 테이블에 공유 테이블 잠금이 적용되어 SELECT 작업 이외의 모든 작업을 수행할 수 없게 됩니다. SharePoint Server 2010 데이터베이스는 클러스터형 인덱스만을 사용합니다. 클러스터형 인덱스를 다시 작성하는 동안에는 테이블에 대해 단독 테이블 잠금이 적용되어 최종 사용자가 테이블에 액세스할 수 없습니다.

다음 예제 스크립트를 사용자 지정하여 테이블의 모든 인덱스를 다시 작성할 수 있습니다.

USE Contoso_Content_1
GO
ALTER INDEX ALL ON [database_name. [ schema_name ] . | schema_name. ]table_or_view_name
REBUILD WITH (FILLFACTOR = 70, SORT_IN_TEMPDB = ON, ONLINE = ON,
STATISTICS_NORECOMPUTE = ON)
GO

보고 데이터베이스에 대한 특별 고려 사항

고객은 보고 데이터베이스에서 사용 가능한 사용자 지정 필드 및 데이터를 기반으로 하는 사용자 지정 보고서를 구현할 가능성이 높으므로, 확장 가능하며 성능을 확인할 수 있는 솔루션을 사용하려면 T-SQL 작성 및 인덱스 작성 시에 다음의 모범 사례를 따르는 것이 좋습니다. Project Server 2010에서는 기본 키 외부에서 이와 같이 동적으로 생성되는 테이블을 인덱싱하지 않습니다.

Microsoft 고객 지원 서비스와 함께 작업하는 경우 지원 엔지니어가 추가로 작성된 인덱스 또는 기존 인덱스에 추가된 열을 제거하도록 요청할 수 있습니다. 추가 인덱스가 있으면 데이터 액세스 경로가 변경되며, 일부 경우에는 예기치 않은 성능 및 잠금/교착 상태 문제가 발생할 수도 있기 때문입니다.

서버의 채우기 비율 설정

채우기 비율을 사용하면 인덱스 데이터 저장소 및 성능을 보다 개선할 수 있습니다. 인덱스를 만들거나 다시 작성할 때는 채우기 비율 값(1-100)에 따라 각 리프 수준 페이지에서 데이터를 채울 수 있는 공간의 비율이 결정됩니다. 나머지 공간은 이후 확장을 위해 예약됩니다. 대부분의 경우에는 기본 서버 차원 채우기 비율 수준인 0이 가장 적합합니다. 그러나 SharePoint Server 2010에서는 확장을 지원하고 조각화를 최소화하기 위해 서버 차원 설정으로 70을 사용하는 것이 가장 좋습니다.

개별 테이블 또는 인덱스에 대해 채우기 비율을 설정할 수도 있지만, 이렇게 하지 않는 것이 좋습니다.

인덱스 하나 이상의 채우기 비율 값을 보려면 sys.indexes 카탈로그 보기를 쿼리합니다. 이 보기에 대한 자세한 내용은 sys.indexes(Transact-SQL)(https://technet.microsoft.com/ko-kr/library/ms173760.aspx)를 참조하십시오.

서버 차원 채우기 비율 값을 구성하려면 sp_configure system 저장 프로시저를 사용합니다. 자세한 내용은 sp_configure(Transact-SQL)(https://technet.microsoft.com/ko-kr/library/ms188787.aspx)를 참조하십시오.