압축된 테이블을 생성하기 전에 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 속성에 대한 최상의 값을 결정하려면 이 절에 대해 다른 값을 사용하여 동일한 테이블의 여러 복사본을 만들어야 합니다.
-
이 작업이 완료되면 결과 .ibd 파일의 크기를 측정하고 각 파일이 실제 워크로드에서 얼마나 잘 수행되는지 확인합니다.
-
KEY_BLOCK_SIZE 값은 힌트로 간주됩니다.
-
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 구문의 일부로 간주되지 않습니다. 따라서 지정하면 무시됩니다.