Loading...
MySQL 9.5 Reference Manual 9.5의 20.7.4 Message Compression의 한국어 번역본입니다.
아래의 경우에 피드백에서 신고해주신다면 반영하겠습니다.
감사합니다 :)
온라인 group 멤버들 사이에 전송되는 메시지에 대해, Group Replication은 기본적으로 메시지 압축을 활성화합니다. 특정 메시지가 압축되는지는
group_replication_compression_threshold
시스템 변수로 구성하는 임곗값에 따라 달라집니다. 페이로드가 지정한 바이트 수보다 큰 메시지는 압축됩니다.
기본 압축 임곗값은 1,000,000바이트입니다. 예를 들어 다음 구문을 사용하여 압축 임곗값을 2MB로 증가시킬 수 있습니다:
1STOP GROUP_REPLICATION; 2SET GLOBAL group_replication_compression_threshold = 2097152; 3START GROUP_REPLICATION;
group_replication_compression_threshold
를 0으로 설정하면, 메시지 압축은 비활성화됩니다.
Group Replication은 그룹 내에서 전송되는 메시지를 압축하기 위해 LZ4 압축 알고리즘을 사용합니다. LZ4 압축 알고리즘이 지원하는 최대 입력 크기는 2113929216바이트라는 점에 유의하십시오. 이 한도는
group_replication_compression_threshold
시스템 변수가 가질 수 있는 최대 값보다 낮으며, 해당 최대 값은 XCom이 허용하는 최대 메시지 크기에 맞춰져 있습니다. 따라서 LZ4의 최대 입력 크기는 메시지 압축의 실질적인 한도가 되며, 메시지 압축이 활성화된 상태에서 이 크기를 초과하는 트랜잭션은 커밋될 수 없습니다. LZ4 압축 알고리즘을 사용할 때는
group_replication_compression_threshold
값을 2113929216바이트보다 크게 설정하지 마십시오.
group_replication_compression_threshold
값은 모든 group 멤버에서 Group Replication에 의해 동일할 필요는 없습니다. 그러나 불필요한 트랜잭션 롤백, 메시지 전달 실패, 또는 메시지 복구 실패를 피하기 위해서는 모든 group 멤버에서 동일한 값으로 설정하는 것이 바람직합니다.
donor의 바이너리 로그에서 상태 전송 방식으로 수행되는 분산 복구용 메시지에 대해서도 압축을 구성할 수 있습니다. group에 이미 속해 있는 donor에서 joining member로 전송되는 이러한 메시지에 대한 압축은
group_replication_recovery_compression_algorithms
와
group_replication_recovery_zstd_compression_level
시스템 변수를 사용하여 별도로 제어할 수 있습니다. 자세한 내용은
Section 6.2.8, “Connection Compression Control”
을 참조하십시오.
binlog_transaction_compression
시스템 변수로 활성화하는 바이너리 로그 트랜잭션 압축 또한 대역폭 절약에 사용할 수 있습니다. 트랜잭션 페이로드는 group 멤버 사이에서 전송될 때 압축된 상태를 유지합니다. 바이너리 로그 트랜잭션 압축을 Group Replication의 메시지 압축과 함께 사용하는 경우, 메시지 압축이 데이터에 대해 동작할 수 있는 기회는 줄어들지만, 헤더와 압축되지 않은 이벤트 및 트랜잭션 페이로드에 대해서는 여전히 압축을 수행할 수 있습니다. 바이너리 로그 트랜잭션 압축에 대한 자세한 내용은
Section 7.4.4.5, “Binary Log Transaction Compression”
을 참조하십시오.
group 내에서 전송되는 메시지에 대한 압축은 group communication thread로 데이터가 전달되기 전에 group communication engine 레벨에서 발생하므로, mysql 사용자 세션 스레드의 컨텍스트 내에서 수행됩니다. 메시지 페이로드 크기가
group_replication_compression_threshold
에 설정된 임곗값을 초과하면, 트랜잭션 페이로드는 group으로 전송되기 전에 압축되며, 수신 시 압축이 해제됩니다. 멤버는 메시지를 수신하면 메시지 봉투를 확인하여 압축 여부를 검증합니다. 필요하다면 상위 계층에 전달하기 전에 트랜잭션의 압축을 해제합니다. 이 과정은 다음 그림에 나타나 있습니다.
Figure 20.13 Compression Support

네트워크 대역폭이 병목일 때, 메시지 압축은 group communication 레벨에서 최대 30-40%의 처리량 향상을 제공할 수 있습니다. 이는 부하가 걸린 대규모 서버 group의 컨텍스트에서 특히 중요합니다. group 내 N 개 참가자 사이의 상호 연결은 TCP 피어 투 피어 특성을 가지므로, 송신자는 동일한 양의 데이터를 N 번 전송하게 됩니다. 또한, 바이너리 로그는 높은 압축률을 보이는 경우가 많습니다. 이는 큰 트랜잭션을 포함하는 Group Replication 워크로드에서 압축을 매우 유용한 기능으로 만듭니다.
20.7.3 Single Consensus Leader
20.7.5 Message Fragmentation