다음을 통해 공유


분할

데이터베이스를 분할하면 성능이 향상되고 유지 관리가 쉬워집니다. 큰 테이블을 작은 개별 테이블로 분할하면 검색할 데이터가 줄어 일부 데이터만 액세스하는 쿼리의 경우 실행 속도가 빨라질 수 있습니다. 인덱스를 다시 작성하거나 테이블을 백업하는 등의 유지 관리 태스크는 더욱 빨리 실행될 수 있습니다.

테이블을 물리적으로 개별 디스크 드라이브에 두면 테이블을 나누지 않고도 분할할 수 있습니다. 한 테이블을 하나의 물리적 드라이브에 두고 관련 테이블을 별도의 드라이브에 두면 테이블 간의 조인을 수반하는 쿼리를 실행할 때 여러 디스크 헤드가 동시에 데이터를 읽으므로 쿼리 성능이 향상될 수 있습니다. SQL Server 파일 그룹을 사용하여 테이블을 둘 디스크를 지정할 수 있습니다.

하드웨어 분할

하드웨어 분할은 사용 가능한 하드웨어 아키텍처를 활용할 수 있도록 데이터베이스를 디자인합니다. 다음은 하드웨어 분할 예입니다.

  • 많은 쿼리가 동시에 실행될 수 있도록 여러 작업 스레드를 허용하는 다중 프로세서. 또는 쿼리 구성 요소가 동시에 실행되도록 하여 다중 프로세서에서 단일 쿼리를 더 빨리 실행할 수 있습니다. 예를 들어 쿼리에서 참조하는 각 테이블을 다른 스레드로 동시에 검색할 수 있습니다.

  • 여러 디스크 드라이브에 걸친 데이터 스트라이프를 허용하는 RAID(Redundant Array of Independent Disks) 장치. 더 많은 읽기 및 쓰기 헤드가 데이터를 동시에 읽으므로 데이터 액세스가 더 빨라집니다. 일반적으로 여러 드라이브에 걸쳐 테이블을 스트라이프하면 하나의 드라이브에 테이블을 저장할 때보다 검색 속도가 향상될 수 있습니다. 또는 테이블을 관련 테이블과는 별도의 드라이브에 저장하면 이러한 테이블을 조인하는 쿼리 성능이 크게 향상될 수 있습니다. 자세한 내용은 RAID를 참조하십시오.

수평 분할

수평 분할은 한 테이블을 여러 테이블로 나눕니다. 이렇게 하면 각 테이블의 열 수는 같지만 행 수는 줄어듭니다. 예를 들어 10억 개의 행이 포함된 테이블을 각각 특정 연도의 한 달 데이터를 나타내는 12개의 작은 테이블로 수평 분할할 수 있습니다. 특정 월의 데이터만 필요한 쿼리에서는 해당 테이블만 참조합니다.

테이블을 수평 분할하는 방법은 데이터 분석 방식에 따라 결정됩니다. 쿼리가 가능한 적은 수의 테이블을 참조하도록 테이블을 분할해야 합니다. 그렇지 않으면 쿼리 시 테이블을 논리적으로 병합하기 위해 너무 많은 UNION 쿼리가 사용되어 성능에 영향을 줄 수 있습니다. 수평 분할된 테이블을 쿼리하는 방법은 뷰 사용 시나리오를 참조하십시오.

보존 기간과 사용량을 기준으로 데이터를 수평 분할하는 것이 가장 일반적입니다. 예를 들어 테이블에 지난 5년간의 데이터가 있지만 현재 연도의 데이터만 주기적으로 액세스한다고 가정합니다. 이러한 경우에는 데이터를 각각 1년간의 데이터만 포함하는 5개의 테이블로 분할할 수 있습니다.

자세한 내용은 분할된 테이블 및 인덱스를 참조하십시오.

수직 분할

수직 분할은 한 테이블을 보다 적은 열을 포함하는 여러 테이블로 나눕니다. 수직 분할의 두 가지 유형은 정규화와 행 나누기입니다.

  • 정규화는 테이블에서 중복 열을 제거하여 기본 키와 외래 키 관계로 기본 테이블에 연결된 보조 테이블에 이러한 열을 두는 표준 데이터베이스 프로세스입니다.

  • 행 나누기는 원래 테이블을 보다 적은 열의 테이블로 세로로 나눕니다. 나뉜 테이블의 각 논리 행은 모든 분할된 테이블에 있는 동일한 UNIQUE KEY 열로 식별되는 다른 테이블의 동일한 논리 행과 일치합니다. 예를 들어 각 나뉜 테이블에서 ID가 712인 행을 조인하면 원래 행이 다시 만들어집니다.

수평 분할과 마찬가지로 수직 분할을 사용하면 쿼리에서 검색하는 데이터가 줄어듭니다. 따라서 쿼리 성능이 향상됩니다. 예를 들어 열이 7개인 테이블에서 처음 4개 열만 주로 참조하는 경우 뒤의 3개 열을 별도의 테이블로 나눠 성능을 향상시킬 수 있습니다.

여러 파티션의 데이터를 분석하는 경우에는 테이블을 조인하는 쿼리가 필요하므로 수직 분할은 신중히 고려해야 합니다. 또한 파티션이 매우 클 경우 수직 분할은 성능에 영향을 줍니다.