SQL Server 2016 향상된 복제 기능 – 배포 데이터베이스 클린업 향상

 

·      Version : SQL Server 2016 SP2, 2012 SP4 이후

 

SQL Server 2016 SP2 에서 복제 기능 향상으로 배포 데이터베이스를 클린업 할때 사용자가 일괄 삭제에 대한 입력 값을 정의할  있으며 대량 삭제 작업시 시스템이 자동으로 삭제 비율을 조정   있도록 변경되었다.

 

복제의 배포 데이터베이스는 전체 복제 토폴로지에서 매우 중요한 구성요소이다트랜잭션 복제의 경우 배포 에이전트는 복제 에이전트에 대한 복제 메타 데이터와 기록을 저장하는  외에도 구독자에게 전달  트랜잭션과 명령에 대한 중간 저장소를 제공한다 이러한 트랜잭션과 명령은 MSRepl_Transactions MSRepl_Commands 테이블에 저장된다트랜잭션수가 매우 많은 게시자를 포함하는 트랜잭션 복제 토폴로지에서는 배포 데이터베이스의 MSRepl_Commands  MSRepl_Transactions 테이블이 상당히 커질  있다.

 

배포 서버에서 10분마다 실행되는 배포 클린업 작업은 지정된 트랜잭션 보존기간(기본 72시간) 기준으로 오래된 트랜잭션  명령을 삭제한다또한 배포 클린업 작업은 배포 서버에서 만료된 구독을 삭제한다.


 

배포 데이터베이스 클린업에서 사용자가 오해하는 부분이 있는데 동일한 게시 데이터베이스에 여러 트랜잭션 또는 스냅샷 게시가 있고 이러한 게시에 대한 클린업 작업을  배포 에이전트가 서로 다른 간격으로 실행되도록 구성하는 경우 클린업은 72시간 보다 오래된 데이터를 삭제하지 않을  있다 이유는 배포 에이전트는 개별 게시자 데이터베이스에 대한 개별 배포 에이전트가 아닌 게시자 데이터베이스 기반으로 @max_cleanup_xact_seqno 계산하기 때문이다.

 

트랜잭션이 많은 환경에서 배포 클린업 작업은 많은 양의 만료된 트랜잭션  명령을 삭제해야한다클린업 작업은 while 루프를 사용하여 MSRepl_Commands  MSRepl_Transactions 항목을  2000  5000행씩 일괄 삭제 한다. MSRepl_Commands MSRepl_Transactions 테이블 크기에 따라 삭제 시간이 오래 걸리수 있으므로 잠금  차단 또는 복제 에에전트 실패와 같은 여러가지 성능 문제가 발생할  있다.  복제 테이블의 크기가 작을 때는 문제 없지만  200~ 300  이상의  테이블 경우 성능 문제가 발생할  있다.

 

향상된 배포 클린업 기능으로는 삭제 프로시저에서 사용할 일괄 처리 행수를 사용자가 정의할  있다만약 매개 변수를 명시적으로 정의하지 않으면 기본값(batch size = 2000, row = 5000) 사용한다.   또한  반복마다 일괄 처리 크기를 이전의 반복 성능에 따라 배치 크기를 늘리거나 줄인다삭제 쿼리가 수행한 시간이 이전 실행과 비교하여 50% 향상되면 배치 크기 값을 20% 까지 증가하여 최대 50000행까지 증가한다만약 이전 실행과 비교하여  20% 감소하면 배치 크기 값을 50% 감소하고 기본값 2000/5000 으로  MSRepl_Commands  MSRepl_Transactions 각각에 대해 일괄 처리 비율을 조절한다.

 

또한 향상된 기능으로 만료된 구독을 클린업 하는 작업을 기존의 배포 클린업 작업과 분리하였다하루에   실행되도록 등록된 구독 만료 클린업 작업은 배포 데이터베이스 서버에 연결하여 구독 클린업 저장 프로시저를 실행 한다클린업 작업은 삭제된 행의 누적값이 아닌 while루프의 마지막 반복을 기반으로  계수를 보고한다또한 메시지에서 표현되는 값을row/sec 에서row/ms 변경되어 보다 정확한 비율을 제공한다.

 

사용자 정의 파라메터를 지원하기 위해 sp_adddistributiondb 저장 프로시저에  개의 새로운 매개변수 @deletebtchsize_xact  @deletebatchsize_cmd 추가 되었다 매개 변수는 MSRepl_Transactions  MSRepl_Commands 테이블의 일괄 삭제 처리를 제어한다또한 SSMS 변경 사항을 지원하도록 업데이트 되었다.

 

[참고자료]

https://blogs.msdn.microsoft.com/sql_server_team/replication-enhancement-improved-distribution-database-cleanup/

 

 

 

2018-06-08 / 강성욱 / http://sqlmvp.kr / http://sqlangeles.com

 

SQL Server, MS SQL, SQL replication, Replication Enhancement, SQL 복제배포 데이터베이스, SQL Server AG, Availability Group, HA



출처: https://sqlmvp.tistory.com/1250?category=618825 [Database Lab]




profile

강성욱 / jevida@naver.com
Microsoft SQL Server MVP
Blog : http://sqlmvp.kr
Facebook : http://facebook.com/sqlmvp

Kakao Talk : SQLMVP

Line : jevida


현재 LA에 거주하고 있으며 SQL에 관심있는 분이면 언제든 친추 환영합니다.