다음을 통해 공유


시스템에 성능 문제가 있음

복제 성능은 다음과 같은 5개의 차원에서 측정될 수 있습니다.

  • 대기 시간: 복제 토폴로지의 노드 간에 데이터 변경 내용을 전파하는 데 소요되는 시간

  • 처리량: 시간에 따라 시스템에서 지속할 수 있는 복제 작업의 양(특정 기간 동안 배달된 명령으로 측정)

  • 동시성: 시스템에서 동시에 작동될 수 있는 복제 프로세스의 수

  • 동기화 기간: 지정된 동기화를 완료하는 데 소요되는 시간

  • 리소스 소비량: 복제 처리의 결과로 사용되는 하드웨어 및 네트워크 리소스

트랜잭션 복제를 기반으로 구축된 시스템은 일반적으로 짧은 대기 시간과 높은 처리량을 요구하므로 대기 시간과 처리량은 트랜잭션 복제에서 가장 중요한 요소입니다. 병합 복제 위에 구축된 시스템에는 대개 많은 수의 구독자가 존재하며 게시자와 이러한 구독자 간에 상당히 많은 동시 동기화 작업이 수행될 수 있으므로 동시성과 동기화 기간은 병합 복제에서 가장 중요한 요소입니다.

복제를 구성한 다음에는 응용 프로그램 및 토폴로지에 일반적으로 사용되는 작업과의 복제 작동 방식을 결정할 수 있는 성능 기준선을 만드는 것이 좋습니다. 복제 모니터 및 시스템 모니터를 사용하여 위에 나열된 5가지 복제 성능의 일반적인 수치를 확인할 수 있습니다. 기준 수치를 설정한 후에 복제 모니터에서 임계값 및 경고를 설정합니다. 자세한 내용은 복제 모니터로 성능 모니터링, 복제 모니터에 임계값 및 경고 설정복제 에이전트 이벤트에 대한 경고 사용을 참조하십시오. 복제 문제 해결에 사용할 수 있는 도구에 대한 자세한 내용은 문제 해결 도구(복제)를 참조하십시오.

설명 및 사용자 동작

복제 성능은 다음 요인의 영향을 받습니다.

  • 서버 및 네트워크 하드웨어

  • 데이터베이스 디자인

  • 배포자 구성

  • 게시 디자인 및 옵션

  • 필터 디자인 및 사용

  • 구독 옵션

  • 스냅숏 옵션

  • 에이전트 매개 변수

  • 유지 관리

성능 문제가 발생하면 다음 섹션의 제안 사항을 읽어 보고 발생한 문제점에 영향을 주는 영역에서 필요한 사항을 변경하는 것이 좋습니다. 예를 들면 다음과 같습니다.

  • 병합 복제를 사용하는 경우 필터링된 단일 아티클이 동기화 시간의 대부분을 차지하고 있다는 사실을 복제 모니터를 통해 발견하면 적절한 필터링 옵션을 사용하고 있으며 필터의 열이 인덱싱되었는지를 확인합니다.

  • 트랜잭션 복제를 사용하는 경우 게시된 테이블에 대해 일괄 처리 작업을 수행할 때 대기 시간이 길면 저장 프로시저 실행을 복제하여 일괄 처리 작업을 구독자에서 수행하십시오.

모든 유형의 복제

모든 유형의 복제에 대해 다음 영역을 고려해야 합니다. 자세한 내용은 일반적인 복제 성능 향상을 참조하십시오.

  • 서버 및 네트워크

    • Microsoft SQL Server 데이터베이스 엔진에 할당될 최소 및 최대 메모리 양을 설정합니다.

    • 데이터베이스 데이터 파일 및 로그 파일이 적절히 할당되도록 합니다. 복제와 관련된 모든 데이터베이스의 트랜잭션 로그에 별도의 디스크 드라이브를 사용합니다.

    • 복제에 사용하는 서버, 특히 배포자에 메모리를 추가해 봅니다.

    • 다중 프로세서 컴퓨터를 사용합니다.

    • 빠른 네트워크를 사용합니다. 네트워크 속도가 느린 경우 네트워크 설정 및 에이전트 매개 변수를 적절히 지정합니다. 자세한 내용은 느린 네트워크로 인해 문제가 발생함을 참조하십시오.

  • 데이터베이스 디자인

    • 최상의 데이터베이스 디자인 방법을 따릅니다.

    • READ_COMMITTED_SNAPSHOT 데이터베이스 옵션을 설정해 봅니다.

    • 트리거의 응용 프로그램 논리에 유의합니다.

    • LOB(Large Object) 데이터 형식의 사용을 제한합니다.

  • 게시 디자인 및 옵션

    • 필요한 데이터만 게시합니다.

    • 게시 디자인 및 응용 프로그램 동작을 통해 충돌을 최소화합니다.

    • 행 필터를 주의해서 사용합니다.

    • 초기 테스트, 모니터링 또는 디버깅 도중을 제외하고 복제 에이전트의 정보 표시 수준을 줄입니다.

  • 구독 옵션

    • 다수의 구독자가 있을 경우 끌어오기 구독을 사용합니다.

    • 구독자가 너무 오래된 경우 구독을 다시 초기화합니다.

  • 스냅숏 옵션

    • 필요할 경우와 사용률이 낮은 시간에만 스냅숏 에이전트를 실행합니다.

    • 게시에 대해 단일 스냅숏 폴더를 사용합니다.

    • 데이터베이스 또는 로그 파일 저장에 사용되지 않는 배포자의 로컬 드라이브에 스냅숏 폴더를 둡니다.

    • 구독자에서 구독 데이터베이스를 만들 때는 단순 또는 대량 로그 복구 모델을 지정합니다.

    • 느린 대역폭 네트워크에 대해 대체 스냅숏 폴더 및 이동식 미디어에 압축 스냅숏을 사용합니다.

    • 스냅숏 에이전트, 병합 에이전트 및 배포 에이전트의 -MaxBCPThreads 매개 변수를 사용합니다. 배포 에이전트 및 병합 에이전트의 -UseInprocLoader 매개 변수를 사용합니다.

트랜잭션 복제

트랜잭션 복제에 대해 다음 영역을 고려해야 합니다. 자세한 내용은 트랜잭션 복제 성능 향상을 참조하십시오.

  • 데이터베이스 디자인

    • 응용 프로그램 디자인에서 트랜잭션 크기를 최소화합니다.
  • 배포자 구성

    • 전용 서버에서 배포자를 구성합니다.

    • 배포 데이터베이스의 크기를 적절하게 설정합니다.

  • 게시 디자인 및 옵션

    • 게시된 테이블을 일괄로 업데이트할 때 저장 프로시저 실행을 복제합니다.

    • 여러 게시 간에 아티클을 분산시킵니다.

  • 구독 옵션

    • 여러 게시가 같은 게시자에 있는 경우 공유 에이전트 대신 독립 에이전트를 사용합니다. 기본 동작입니다.

    • 에이전트를 잦은 간격으로 실행하는 대신 계속 실행합니다.

  • 에이전트 매개 변수

    • 로그 판독기 에이전트에 대해 -MaxCmdsInTran 매개 변수를 사용합니다.

    • 배포 에이전트에 대해 -SubcriptionStreams 매개 변수를 사용합니다.

    • 로그 판독기 에이전트에 대해 -ReadBatchSize 매개 변수의 값을 늘립니다.

    • 배포 에이전트에 대해 -CommitBatchSize 매개 변수의 값을 늘립니다.

    • 로그 판독기 에이전트에 대해 -PollingInterval 매개 변수의 값을 줄입니다.

병합 복제

병합 복제에 대해 다음 영역을 고려해야 합니다. 자세한 내용은 병합 복제 성능 향상을 참조하십시오.

  • 데이터베이스 디자인

    • 행 필터 및 조인 필터에 사용된 열을 인덱싱합니다.

    • LOB(Large Object) 데이터 형식이 포함된 테이블을 더 정규화합니다.

  • 게시 디자인

    • 90RTM(SQL Server 2005 이상 버전)의 게시 호환성 수준을 사용합니다.

    • 적절한 게시 보존 설정을 사용합니다.

    • 게시자에서만 변경되는 테이블의 다운로드 전용 아티클을 사용합니다.

  • 필터 디자인 및 사용

    • 행 필터 절의 복잡도를 제한합니다.

    • 매개 변수가 있는 필터와 함께 사전 계산 파티션을 사용합니다. 이 기능은 기본적으로 사용됩니다.

    • 데이터가 필터링되었지만 사용자 간에 공유되지 않으면 겹치지 않는 파티션을 사용합니다.

    • 복잡한 조인 필터 계층을 만들지 않습니다.

    • 논리에 맞는 경우 join_unique_key 옵션을 1로 설정합니다.

  • 사전 계산 파티션 고려 사항

    • 일괄 처리에 많은 데이터 변경 사항이 있는 경우 신중하게 응용 프로그램을 디자인합니다. 조인 필터에서 부모 테이블의 데이터 변경은 자식 테이블의 해당 데이터 변경보다 먼저 수행되어야 합니다.

    • 일괄 처리에 많은 데이터 변경 사항이 있는 경우 일괄 처리의 변경 사항 수를 줄이고 일괄 처리 사이에 병합 에이전트를 실행합니다. 이렇게 할 수 없으면 게시에 대한 generation_leveling_threshold 값을 늘립니다.

  • 구독 고려 사항

    • 구독 동기화 일정은 엇갈리게 설정합니다.
  • 에이전트 매개 변수

    • 구독이 빠른 연결을 통해 동기화되고 게시자에서 구독자로 변경 내용이 전송되면 병합 에이전트에 대해 -ParallelUploadDownload 매개 변수를 사용합니다.
  • 스냅숏 옵션

    • 초기 스냅숏을 생성하기 전에 대형 테이블에 ROWGUIDCOL 열을 만듭니다.

    • 스냅숏을 미리 생성하거나 구독자가 처음 동기화될 때 스냅숏의 생성과 적용을 요청하도록 합니다.

  • 유지 관리

    • 병합 복제 시스템 테이블의 인덱스를 가끔씩 다시 만듭니다.

    • 복제 모니터의 동기화 기록 탭을 사용하여 동기화 성능을 모니터링합니다.

참고 항목

개념