Computer >> 컴퓨터 >  >> 프로그래밍 >> MySQL

MySQL InnoDB 테이블 압축 활성화 방법 완벽 가이드

MySQL에서 압축 테이블을 생성하기 전에 반드시 innodb_file_per_table 설정 옵션이 활성화되어 있고, innodb_file_format이 Barracuda로 설정되어 있는지 확인해야 합니다.

이러한 파라미터는 MySQL 설정 파일인 my.cnf 또는 my.ini에서 확인할 수 있으며, MySQL 서버를 재시작하지 않고도 SET 구문을 통해 동적으로 설정할 수 있습니다.

테이블 압축 활성화 방법

특정 테이블에 압축을 적용하려면 CREATE TABLE 또는 ALTER TABLE 구문에서 ROW_FORMAT=COMPRESSED, KEY_BLOCK_SIZE 절을 사용하거나, 두 옵션을 함께 지정하면 됩니다.

압축 테이블 생성 쿼리 예제

SET GLOBAL innodb_file_per_table=1;
SET GLOBAL innodb_file_format=Barracuda;
CREATE TABLE t1
(c1 INT PRIMARY KEY)
ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=8;

주요 옵션 설명 및 주의사항

  • ROW_FORMAT=COMPRESSED만 지정하는 경우: KEY_BLOCK_SIZE는 생략할 수 있으며, 기본 페이지 크기 값이 사용됩니다. 이 값은 innodb_page_size 값의 절반에 해당합니다.
  • KEY_BLOCK_SIZE만 지정하는 경우: ROW_FORMAT=COMPRESSED를 생략해도 자동으로 압축이 활성화됩니다.
  • 최적의 KEY_BLOCK_SIZE 값 찾기: 가장 적합한 값을 결정하려면 동일한 테이블을 서로 다른 KEY_BLOCK_SIZE 값으로 여러 개 생성한 후, 각각의 .ibd 파일 크기를 측정하고 실제 워크로드 환경에서 성능을 비교해야 합니다.
  • 힌트(Hint)로 처리되는 값: KEY_BLOCK_SIZE 값은 엄격한 요구사항이 아닌 힌트로 간주됩니다.
  • strict 모드 동작: innodb_strict_mode=ON 상태에서 유효하지 않은 KEY_BLOCK_SIZE 값을 지정하면 오류가 반환됩니다.
  • 페이지 크기 옵션: InnoDB 데이터 페이지의 기본 비압축 크기는 16KB입니다. 옵션 값 조합에 따라 MySQL은 테이블의 .ibd 파일에 대해 1KB, 2KB, 4KB, 8KB 또는 16KB의 페이지 크기를 사용합니다.
  • 압축 알고리즘: 실제 압축 알고리즘은 KEY_BLOCK_SIZE 값의 영향을 받지 않습니다.
  • 인덱스 압축: 클러스터드 인덱스를 포함한 테이블의 모든 인덱스는 CREATE TABLE 또는 ALTER TABLE 구문에서 지정된 것과 동일한 페이지 크기로 압축됩니다. ROW_FORMAT과 KEY_BLOCK_SIZE 같은 테이블 속성은 InnoDB 테이블의 CREATE INDEX 구문에 포함되지 않으므로, 해당 구문에서 지정하더라도 무시됩니다.