제품 동향
create table employee(id int, age int, gender boolean, other varchar(1000) primary key (id)), id, age, gender의 작은 필드에 자주 액세스하는 반면, 'other' 대형 필드에 대한 액세스 빈도가 상대적으로 낮은 경우, 'other' 칼럼은 압축된 칼럼으로 생성될 수 있습니다. 일반적인 상황에서는 other에 대한 읽기 및 쓰기만 칼럼의 압축 및 압축 해제를 트리거하고 다른 칼럼에 대한 액세스는 칼럼의 압축 및 압축 해제를 트리거하지 않습니다. 이를 통해 행 데이터 스토리지 크기를 더욱 줄여 액세스 빈도가 높은 작은 필드 속도를 높이고, 스토리지 용량이 비교적 크고 액세스 빈도가 낮은 필드의 스토리지 용량을 축소할 수 있게 됩니다.BLOB(TINYBLOB, MEDIUMBLOB, LONGBLOB 포함)TEXT(TINYTEXT, MEDIUMTEXT, LONGTEXT 포함)VARCHARVARBINARYLONGBLOB과 LONGTEXT의 최대 길이는 $2^{32}-2$까지 지원되며, 이는 공식 String Type Storage Requirements가 지원하는 $2^{32}-1$ 보다 1바이트 적습니다.column_definition의 COLUMN_FORMAT 정의가 변경되었습니다. 동시에 칼럼 압축은 Innodb 스토리지 엔진 유형 테이블만 지원됩니다.column_definition:data_type [NOT NULL | NULL] [DEFAULT default_value][AUTO_INCREMENT] [UNIQUE [KEY]] [[PRIMARY] KEY][COMMENT 'string'][COLLATE collation_name][COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}|COMPRESSED=[zlib]] # COMPRESSED 압축된 칼럼 키[STORAGE {DISK|MEMORY}][reference_definition]
CREATE TABLE t1(id INT PRIMARY KEY,b BLOB COMPRESSED);
CREATE TABLE t1(id INT PRIMARY KEY,b BLOB COMPRESSED=zlib);
DDL | 압축 속성 상속 여부 |
CREATE TABLE t2 LIKE t1; | Y |
CREATE TABLE t2 SELECT * FROM t1; | Y |
CREATE TABLE t2(a BLOB) SELECT * FROM t1; | N |
DDL | 설명 |
ALTER TABLE t1 MODIFY COLUMN a BLOB; | 압축 칼럼을 비압축으로 변경 |
ALTER TABLE t1 MODIFY COLUMN a BLOB COMPRESSED; | 비압축 칼럼을 압축으로 변경 |
매개변수 이름 | 동적 | 유형 | 기본값 | 매개변수 값 범위 | 설명 |
innodb_column_compression_zlib_wrap | Yes | bool | TRUE | true/false | 활성화 시 데이터의 zlib 헤더와 zlib 테일이 생성되고 adler32 인증을 진행합니다. |
innodb_column_compression_zlib_strategy | Yes | Integer | 0 | [0,4] | 칼럼 압축에 사용되는 압축 정책. 최소값: 0, 최대값: 4. 0 - 4는 각각 zlib의 압축 정책 Z_DEFAULT_STRATEGY, Z_FILTERED, Z_HUFFMAN_ONLY, Z_RLE 및 Z_FIXED에 해당합니다 . 일반적으로 Z_DEFAULT_STRATEGY는 텍스트 데이터에 가장 적합하고 Z_RLE는 이미지 데이터에 가장 적합합니다. |
innodb_column_compression_zlib_level | Yes | Integer | 6 | [0,9] | 칼럼 압축에 사용되는 압축 수준. 최소값: 0, 최대값: 9. 0은 압축하지 않음을 의미하며, 값이 클수록 압축된 더 작게 압축되지만 압축 시간은 길어집니다. |
innodb_column_compression_threshold | Yes | Integer | 256 | [0, 0xffffffff] | 칼럼 압축에 사용되는 압축 임계값. 최소값: 1, 최대값: 0xffffffff, 단위: 바이트. 길이가 이 값 이상이면 데이터가 압축되며, 그렇지 않으면 원본 데이터가 변경되지 않고 그대로 유지되고 압축 헤더만 추가됩니다. |
innodb_column_compression_pct | Yes | Integer | 100 | [1, 100] | 칼럼 압축에 사용되는 압축률. 최소값: 1, 최대값: 100. 단위: 백분율. 압축 후 데이터 크기 / 압축 전 데이터 크기가 이 값보다 작으면 데이터가 압축되며, 그렇지 않으면 원본 데이터가 변경되지 않고 그대로 유지되고 압축 헤더만 추가됩니다. |
이름 | 유형 | 설명 |
Innodb_column_compressed | Integer | 칼럼 압축의 압축 횟수. 비압축 형식과 압축 형식의 두 가지 상태 포함 |
Innodb_column_decompressed | Integer | 칼럼 압축의 압축 횟수. 비압축 형식과 압축 형식의 두 가지 상태 포함 |
이름 | 범위 | 설명 |
Compressed column '%-.192s' can't be used in key specification | 압축 칼럼 이름 지정 | 인덱싱된 칼럼에 대한 압축 속성 지정 불가 |
Unknown compression method: %s" | DDL 명령에 지정된 압축 알고리즘 이름 | create table 또는 alter table 시 zlib 이외의 잘못된 압축 알고리즘 지정 |
Compressed column '%-.192s' can't be used in column format specification | 압축 칼럼 이름 지정 | 동일 칼럼에 COLUMN_FORMAT 속성이 지정되어 있으면 압축 속성을 지정할 수 없으며, COLUMN_FORMAT은 NDB에서만 사용됨 |
Alter table ... discard/import tablespace not support column compression | \\ | 칼럼 압축이 있는 테이블은 Alter table ... discard/import tablespace 명령 실행 불가 |
피드백