14.7.6 OLTP 워크로드의 압축
종래, InnoDB
의 압축 기능은 데이터웨어 하우스 구성 등에서 주로 읽기 전용 또는 읽기가 대부분의 워크로드 에 사용하는 것이 좋습니다되어있었습니다. 고속이지만 비교적 작고 비싼 SSD 저장 장치를 증가하면 OLTP
워크로드에서도 압축이 매력적인 것입니다. 높은 트래픽 대화 형 Web 사이트에서는 자주 INSERT
, UPDATE
및 DELETE
작업을 수행하는 응용 프로그램에서 압축 테이블을 사용하여 스토리지 요구 사항 및 초당 I / O 작업 ( IOPS )를 줄일 수 있습니다 .
MySQL 5.6에서 도입 된 구성 옵션을 사용하면 쓰기 부하가 높은 작업 성능 및 확장성에 중점을두고, 특정 MySQL 인스턴스에 맞게 압축 동작을 조정할 수 있습니다.
innodb_compression_level
을 사용하면 압축 정도를 올리거나 내리거나 할 수 있습니다. 값을 크게하면 저장 장치에 수용 할 수있는 데이터의 양이 많아집니다 만, 압축시 CPU 오버 헤드도 많아지는 희생이 따릅니다. 값을 작게하면 저장 공간이 중요하지 않은 경우 CPU 오버 헤드를 줄일 수 있습니다. 그렇지 않으면 데이터가 특히 압축 가능하지 않은 것으로 예측됩니다.innodb_compression_failure_threshold_pct
에는 압축 테이블에 업데이트시에 압축이 실패 했을 때의 컷오프 포인트가 지정됩니다. 이 임계 값을 초과하면, MySQL은 최대innodb_compression_pad_pct_max
에서 지정된 페이지 크기의 비율까지 사용 가능한 공간을 동적으로 조정하여 새로운 각 압축 된 페이지에 추가 공간을 남겨 시작 합니다.innodb_compression_pad_pct_max
를 사용하면 페이지 전체를 다시 압축 할 필요없이 변경을 압축 된 행에 기록하기 위해 각 페이지 에 예약되어있는 영역의 최대 크기를 조정할 수 있습니다. 값을 크게하면 페이지를 다시 압축하지 않고 기록 할 수있는 변경의 양이 많아집니다. MySQL에서는 런타임에 지정된 비율의 축소 작업을 " 실패 "경우에만 압축 된 각 테이블에있는 페이지에 가변 량의 공간이 사용되지만, 압축 된 페이지를 분할하기 위해 부하 높은 작업이 필요합니다.
압축 된 데이터를 조작하면 압축과 비 압축의 두 버전의 페이지가 동시에 메모리에 유지되기 때문에 OLTP 스타일의 작업 부하에서 압축을 사용하는 경우, innodb_buffer_pool_size
구성 옵션의 값을 크게 준비 를하십시오.