MariaDB/MySQL InnoDB 테이블 압축(Compression)
기본정보
- 글쓴이
- 고객지원팀
- 조회수
- 2,469회
상세내용
MySQL 5.5: InnoDB에서의 향상된 관리용이성, 효율성
MySQL5.5 에서 새로 구성되어진 InnoDB는 인터널 InnoDB 셋팅을 통해 사용자에게 더 편한 제어력을 제공하여 특수한 경우나
어플리케이션 작업들에 대해 성능, 크기(scale), 스토리지부분에 쉽게 모니터링, 조정(tune), 최적화(optimized)가 가능하다.
MySQL (혹은 MariaDB도 동일)에는 기본적으로 다양한 테이블 엔진이 있습니다.
최근에 필요에 따라 ARCHIVE 엔진을 사용해 볼 기회가 있었습니다.
이 엔진은 로그 저장과 같이 계속해서 Append 되기만 하고,
중간에 삭제되거나 변경되지 않는 자료를 보관하기에 알맞습니다.
대신 색인을 지원하지 않는 단점이 있습니다.
압축률은 데이터에 따라 다르지만 원본의 1/5 ~ 1/3 정도 되는 것 같습니다.
이와는 무관하게 InnoDB 엔진에도 압축할 수 있는 방법이 있습니다.
하지만 이 압축을 위해서는 파일 형식도 달라져야 합니다.
우선 /etc/mysql/my.cnf 파일의
[mysqld] 항목에
innodb_file_per_table=1
innodb_file_format=barracuda
두 항목을 확인합니다.
(없는 항목은 추가합니다.)
innodb_file_format은 디폴트로 Antelope 인데, 이 경우에는 Compress 되지 않습니다.
위와 같이 설정이 변경된 상태에서,
$ /etc/init.d/mysql restart
시킵니다.
그리고 테이블을 만들 때,
CREATE TABLE foo (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
log VARCHAR(%s) NOT NULL
) ENGINE=InnoDB
ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=8;
와 같은 식으로 만들어 줍니다.
KEY_BLOCK_SIZE는 2,4,8,16 등이 있는데,
8로 했을 경우에 원본 크기의 50% 정도의 압축률과
50% 정도의 입력시 추가 부담 시간이 소요되는 것 같은데,
4로 했을 경우에는 입력하는 시간이 훨씬 더 부담이
되었습니다.
자료실
유용한 자료들을 모아두었습니다.