row 모드에서는 하나의 명령으로 여러 행을 갱신하는 대규모 트랜잭션이 행당 1개의 event를 생성하는데, 한편으로는 많은 수의 binlog가 생성되는 반면, 복제 시 백업 데이터베이스 apply 속도가 비교적 느려, 결과적으로 백업 데이터베이스 복제가 지연됩니다.
Tencent Cloud 커널 팀은 대규모 트랜잭션 복제 시나리오의 분석 및 최적화를 통해 이 기능을 개발했습니다. 대용량 트랜잭션 복제 최적화 기능은 대용량 트랜잭션을 자동으로 식별하고 row 모드 binlog를 statement 형식 binlog로 변환하여 binlog를 줄이고 복제 효율성을 향상시킵니다.
update 복제 시간은 85%, insert는 약 30% 단축됩니다.
대규모 트랜잭션 복제의 최적화 기능은 SQL의 과거 실행 통계를 기반으로 대규모 트랜잭션일 가능성 여부를 판단하는 것입니다. 대용량 트랜잭션으로 인식되어 최적화될 수 있는 경우 격리 수준을 자동으로 RR(반복 읽기) 수준으로 업그레이드하고 binlog를 Statement 형식으로 완료하여 대용량 트랜잭션 백업 데이터베이스의 실행 시간을 단축시킵니다. 그 중:
트랜잭션의 실행을 더 잘 모니터링하기 위해, 트랜잭션 현황 통계 쿼리에 사용할 수 있는 information_schema 데이터베이스의 테이블 CDB_SQL_STATISTICS도 추가되었습니다.
이름 | 상태 | 유형 | 기본값 | 설명 |
---|---|---|---|---|
cdb_optimize_large_trans_binlog | true | bool | false | binlog 대규모 트랜잭션 최적화 스위치 |
cdb_optimize_large_trans_binlog_last_affected_rows_threshold | true | ulonglong | 10000 | 대용량 트랜잭션 최적화 조건: 지난 번 행 수에 영향을 미친 임계값 |
cdb_optimize_large_trans_binlog_aver_affected_rows_threshold | true | ulonglong | 10000 | 대용량 트랜잭션 최적화 조건: 평균 행 수에 영향을 주는 임계값 |
cdb_sql_statistics | true | bool | false | SQL 연산에 대한 통계 시작 여부 |
cdb_sql_statistics_info_threshold | true | ulonglong | 10000 | CDB_SQL_STATISTICS map에 가장 많은 통계가 저장된 SQL의 수 |
설명:사용자는 상기 매개변수의 값을 직접 수정할 수 없습니다. 필요 시 티켓 제출을 통해 수정이 가능합니다.
이름 | 유형 | 설명 |
---|---|---|
DIGEST_MD5 | MYSQL_TYPE_STRING | 해당 SQL의 digest에서 변환된 MD5 |
DIGEST_TEXT | MYSQL_TYPE_STRING | SQL digest 텍스트 형식 |
SQL_COMMAND | MYSQL_TYPE_STRING | SQL 명령어 유형 |
FIRST_UPDATE_TIMESTAMP | MYSQL_TYPE_DATETIME | 해당 통계 정보 최초 생성 시간 |
LAST_UPDATE_TIMESTAMP | MYSQL_TYPE_DATETIME | 해당 통계 정보의 마지막 업데이트 시간 |
LAST_ACCESS_TIMESTAMP | MYSQL_TYPE_DATETIME | 해당 통계에 마지막으로 액세스한 시간 |
EXECUTE_COUNT | MYSQL_TYPE_LONGLONG | 해당 유형의 SQL 실행 횟수 |
TOTAL_AFFECTED_ROWS | MYSQL_TYPE_LONGLONG | 영향을 받는 총 행 수 |
AVER_AFFECTED_ROWS | MYSQL_TYPE_LONGLONG | 영향을 받는 평균 행 수 |
LAST_AFFECTED_ROWS | MYSQL_TYPE_LONGLONG | 마지막으로 영향을 받은 행 수 |
STMT_BINLOG_FORMAT_IF_POSSIBLE | MYSQL_TYPE_STRING | 해당 유형의 SQL을 statement 형식의 binlog로 완성 가능 여부: TRUE 또는 FALSE |
문제 해결에 도움이 되었나요?