Share via


분할 테이블 및 인덱스 개념

분할을 사용하면 데이터 하위 집합을 빠르고 효율적으로 관리 및 액세스하는 동시에 데이터 컬렉션의 무결성을 유지할 수 있으므로 큰 테이블 또는 인덱스를 보다 편리하게 관리할 수 있습니다. 또한 이전 버전의 SQL Server에서 몇 분 내지 몇 시간이 걸렸던 작업(예: OLTP에서 OLAP 시스템으로 데이터 로드)이 몇 초 안에 끝납니다. 데이터의 하위 집합에 대해 수행되는 유지 관리 작업도 전체 테이블 대신 필요한 데이터만 대상으로 하기 때문에 더 효율적입니다.

[!참고]

분할된 테이블 및 인덱스는 SQL Server Enterprise, Developer 및 Evaluation Edition에서만 사용할 수 있습니다.

분할 테이블 및 인덱스의 데이터는 데이터베이스에서 두 개 이상의 파일 그룹으로 분할될 수 있는 단위로 나뉩니다. 행 그룹이 개별 파티션에 매핑되도록 데이터는 수평적으로 분할됩니다. 데이터에서 쿼리나 업데이트가 수행되면 테이블이나 인덱스는 단일 논리적 엔터티로 처리됩니다. 단일 인덱스나 테이블의 모든 파티션은 동일 데이터베이스에 상주해야 합니다.

분할 테이블 및 인덱스는 제약 조건, 기본값, ID 및 타임스탬프 값, 트리거 등 표준 테이블 및 인덱스를 디자인하고 쿼리하는 작업과 관련된 모든 속성과 기능을 지원합니다. 따라서 한 서버의 로컬에만 있는 분할 뷰를 구현하려는 경우에는 분할 테이블을 대신 구현할 수도 있습니다.

현재 테이블의 크기, 증가된 테이블의 크기, 테이블의 사용 방법, 테이블이 사용자 쿼리 및 유지 관리 작업을 얼마나 잘 수행하는지에 따라 분할을 구현할지 여부를 결정합니다.

일반적으로 큰 테이블은 다음의 두 조건이 모두 충족될 때 분할에 적합합니다.

  • 테이블에 서로 다른 방법으로 사용되는 데이터가 많거나 많아질 것으로 예상됩니다.

  • 테이블에 대한 쿼리나 업데이트가 의도 대로 수행되지 않거나 유지 관리 비용이 미리 정의된 유지 관리 기간을 초과합니다.

예를 들어 데이터가 이번 달의 경우 주로 INSERT, UPDATE, DELETE 및 MERGE 작업에 사용되는 반면 이전 달의 경우 SELECT 쿼리에 사용된 경우에는 테이블을 월별로 분할하는 것이 관리하기에 더 수월할 수도 있습니다. 테이블의 정기적인 유지 관리 작업에서 데이터 하위 집합만을 대상으로 해야 하는 경우에 이러한 이점이 특히 부각됩니다. 테이블이 분할되어 있지 않으면 이러한 작업이 전체 데이터 집합에서 많은 리소스를 소비하게 됩니다. 예를 들어 분할을 사용하면 인덱스 다시 작성 및 조각화 모음 같은 유지 관리 작업을 단일 월의 읽기 전용 데이터에서 수행할 수 있습니다. 이때에도 읽기 전용 데이터는 여전히 온라인 액세스가 가능합니다.

이 예를 좀 더 확장하여 분석을 위해 1개월의 읽기 전용 데이터를 이 테이블에서 데이터 웨어하우스 테이블로 이동하려는 경우를 가정해 보십시오. 분할을 사용하면 데이터 하위 집합을 오프라인 유지 관리를 위한 준비 영역으로 빠르게 나눈 다음 기존 분할 테이블에 파티션으로 추가할 수 있습니다. 이때 이러한 테이블은 모두 동일한 데이터베이스 인스턴스에 있다고 가정합니다. 이전 릴리스에서 몇 분에서 몇 시간까지 걸렸던 이러한 작업은 일반적으로 몇 초밖에 걸리지 않습니다.

파티션이 주로 실행하는 쿼리 유형과 하드웨어 구성에 맞춰 올바르게 디자인되어 있는 경우 테이블 또는 인덱스를 분할하면 쿼리 성능이 향상될 수 있습니다. 자세한 내용은 쿼리 성능 향상을 위한 파티션 디자인을 참조하십시오.

파티션은 주로 SQL Server 복제와 함께 사용됩니다. 파티션을 사용하면 복제 시스템에서 관리해야 하는 데이터 및 메타데이터의 양을 효율적으로 줄임으로써 트랜잭션 복제와 병합 복제의 성능을 최적화할 수 있습니다. 복제는 테이블당 최대 1024개의 파티션을 지원합니다. 자세한 내용은 분할 테이블 및 인덱스 복제를 참조하십시오.

분할 솔루션을 실제 데이터베이스에 적용하는 방법의 예를 보여 주기 위해 구현 가능한 분할 시나리오가 AdventureWorks2008R2 예제 데이터베이스에 있습니다. 이 시나리오에 대해서는 AdventureWorks2008R2 예제 데이터베이스에서 분할에서 설명합니다.

분할 아키텍처

SQL Server에서는 데이터베이스에 있는 모든 테이블과 인덱스가 분할된 것으로 간주됩니다. 파티션이 하나뿐인 경우에도 그렇습니다. 기본적으로 파티션은 테이블 및 인덱스의 물리적 아키텍처에서 기초적인 조직 단위를 구성합니다. 즉, 여러 파티션으로 구성된 테이블과 인덱스의 논리적 및 물리적 아키텍처는 단일 파티션 테이블 및 인덱스의 논리적 및 물리적 아키텍처를 미러링합니다. 자세한 내용은 테이블 및 인덱스 구성을 참조하십시오.