사이트 내 전체검색
[MySQL] ARCHIVE 엔진 및 INNODB 테이블 압축
로빈아빠
https://cmd.kr/server/1116 URL이 복사되었습니다.

본문

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로 했을 경우에는 입력하는 시간이 훨씬 더 부담이 

되었습니다.

 

 

어느분께는 도움이 되셨기를... 

댓글목록

등록된 댓글이 없습니다.

1,139 (1/23P)

Search

Copyright © Cmd 명령어 18.224.44.108