자료실

홈 / 고객센터 / 자료실

MariaDB/MySQL InnoDB 테이블 압축(Compression)

기본정보
  • 글쓴이
  • 고객지원팀
  • 조회수
  • 2,484회
상세내용

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


되었습니다.

자료실

유용한 자료들을 모아두었습니다.