다음을 통해 공유


분산형 분할 뷰 설계

분산형 분할 뷰 집합을 디자인하여 데이터베이스 서버의 연결을 구현할 경우 다음을 고려합니다.

  • 응용 프로그램이 실행하는 SQL 문의 패턴을 결정합니다.
  • 테이블이 서로 연관되는 방식을 결정합니다.
  • SQL 문 빈도를 외래 키 분석에서 정의된 파티션에 대해 일치시킵니다.
  • SQL 문 라우팅 규칙을 정의합니다.

응용 프로그램에서 실행하는 SQL 문 패턴

일반적인 처리 기간 동안 응용 프로그램에 의해 실행되는 SQL 문의 목록을 작성한 다음 목록을 SELECT, UPDATE, INSERT 및 DELETE 범주로 나누고 각 범주의 목록을 실행 빈도에 따라 순서를 정합니다. SQL 문이 저장 프로시저를 참조할 경우 저장 프로시저의 기본 SELECT, INSERT, UPDATE 및 DELETE 문을 사용합니다. 기존 SQL Server 데이터베이스를 분할하는 경우 SQL Server 프로파일러 를 사용하여 해당 목록을 가져올 수 있습니다.

사용을 권장한 SQL 문 빈도는 분산형 분할 뷰가 가장 잘 작동하는 일반 온라인 트랜잭션 처리(OLTP) 또는 웹 사이트 데이터베이스의 적절한 근사값입니다. 이러한 시스템은 의사 결정 지원 또는 OLAP 시스템의 쿼리 유형과 비교하여 상대적으로 적은 양의 데이터를 검색하는 개별 SQL 문을 가지는 것이 특징입니다. 각 SQL 문이 적은 양의 데이터를 참조할 경우 각 문의 빈도를 조사하면 시스템 데이터 트래픽의 적절한 근사값을 간단하게 알 수 있습니다. 그러나 대부분의 시스템에는 많은 양의 데이터를 참조하는 SQL 문 그룹이 몇 개 있습니다. 이러한 쿼리에 가중치를 두어 많은 데이터 요구 사항을 반영하도록 하는 별도의 조치를 취할 수 있습니다.

테이블의 관계

부품 번호나 부서 번호 등과 같은 동일한 차원으로 분할할 수 있는 테이블 집합을 찾는 것이 목적입니다. 그러면 해당 차원의 개별 항목과 관련된 모든 행은 같은 멤버 서버에 있게 됩니다. 예를 들어 데이터베이스를 지역에 따라 분할하도록 결정할 수 있습니다. 이를 지원하려면 자체 키에 지역 번호가 없는 테이블도 지역과 관련된 방식으로 분할될 수 있어야 합니다. 이러한 데이터베이스의 Customer 테이블에 지역 번호 열이 없어도 지역이 전체 국가 또는 주의 모음으로 정의되면 Customer.StateProvince 열을 사용하여 지역과 관련된 방식으로 고객을 분할할 수 있습니다.

명시적 외래 키와 암시적 외래 키는 테이블 간 관계를 정의하기 때문에 데이터 분할 방법을 찾을 때 주로 검토하는 요소입니다. 명시적 외래 키 정의를 조사하여 쿼리가 한 테이블의 행을 찾기 위해 다른 테이블의 행을 사용하는 빈도를 결정합니다. 또한 암시적 외래 키를 조사하거나 SQL 문이 특정 외래 키 정의가 없어도 조인 동작에서 다른 테이블 행을 참조하는 데 한 테이블의 행 값을 사용하는 방법을 조사합니다. 암시적 외래 키는 데이터베이스 스키마의 일부로 명시적으로 정의되지 않기 때문에 응용 프로그램이 생성한 SQL 문을 검토하여 키가 아닌 열을 사용하여 테이블을 조인하는 문이 있는지 확인해야 합니다. 이러한 암시적 외래 키는 대개 조인 성능을 향상시키기 위해 인덱싱됩니다. 따라서 데이터베이스에 정의된 인덱스도 검토해야 합니다.

파티션에 대한 SQL 문의 빈도

SQL 문 빈도를 외래 키 분석에서 정의된 파티션에 대해 일치시킵니다. 응용 프로그램의 SQL 문 혼합을 가장 잘 지원할 분할을 선택합니다. 일부 테이블 집합을 둘 이상의 방법으로 분할할 수 있으면 SQL 문 빈도를 사용하여 가장 큰 수의 SQL 문을 충족하는 파티션을 결정합니다. SQL 문에서 가장 자주 참조되는 테이블이 먼저 분할해야 하는 테이블입니다. 테이블이 참조되는 빈도를 기준으로 테이블을 분할할 순서에 우선 순위를 매깁니다.

SQL 문의 패턴도 테이블 분할 여부를 결정하는 데 영향을 미칩니다.

  • 테이블을 참조하는 문의 5% 이상이 INSERT, UDATE 또는 DELETE 문이고 선택한 차원에 따라 테이블을 분할할 수 있다면 테이블을 분할합니다.
  • 테이블을 참조하는 문의 5% 이하가 INSERT, UDATE 또는 DELETE 문이면 각 멤버 서버에 완전한 테이블 복사본을 유지 관리합니다. 또한 모든 테이블 복사본을 업데이트하도록 업데이트 방법도 정의해야 합니다. 높은 수준의 트랜잭션 무결성이 필요하면 트리거를 코딩하여 분산 트랜잭션 컨텍스트 내에서 모든 복사본의 분산 업데이트를 수행할 수 있습니다. 높은 수준의 트랜잭션 무결성이 필요하지 않은 경우에는 SQL Server 복제 메커니즘 중 하나를 사용하여 테이블 복사본 하나의 업데이트를 다른 모든 복사본으로 전파할 수 있습니다.
  • 테이블을 참조하는 문의 5% 이상이 INSERT, UDATE 또는 DELETE 문이고 선택한 차원에 따라 테이블을 분할할 수 없다면 테이블을 분할하거나 복사하지 마십시오.

SQL 문 라우팅 규칙

라우팅 규칙은 어떤 멤버 서버가 각 SQL 문을 가장 효과적으로 처리할 수 있는지 정의할 수 있어야 합니다. 이 규칙은 사용자 입력의 컨텍스트와 문을 완료하는 데 필요한 대량 데이터를 포함하는 멤버 서버 간에 관계를 설정해야 합니다. 응용 프로그램에서는 사용자가 입력한 데이터를 가져와 이를 라우팅 규칙과 비교해 SQL 문을 처리해야 하는 멤버 서버를 결정할 수 있어야 합니다.

참고 항목

개념

연결된 데이터베이스 서버
분할된 뷰 만들기
연결된 데이터베이스 서버를 사용하도록 응용 프로그램 디자인

도움말 및 정보

SQL Server 2005 지원 받기