DATA 전문가로 가는 길

[Admin] MariaDB/MySQL InnoDB 테이블 압축(Compression) 본문

Data Architecture/Admin

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

EstenPark 2019. 8. 7. 10:19

1. 테이블 압축 개요
증가하는 데이터로 인해서 서버의 저장공간이 부족 혹은 추가적인 HDD의 증설을 줄이려는 방법으로 데이터 수정(UPDATE)이 발생하지 않는 로그 테이블에 적용하여 조회 속도 향상 및 저장 공간을 줄일 수 있는 기법. 테이블 압축은 테이블 데이터를 압축해서 보관함으로 파일 I/O를 감소시키는 것이 가장 큰 목적입니다. (반대로 압축을 하게 되면 수정 시에는 속도가 느림)

테이블 압축의 옵션인 블록 사이즈는 2, 4, 8, 16KB로 나눠지게 됩니다. (기본값 : 16KB)

 

2. 테이블 압축 방법

MariaDB [HIWDB]> ALTER TABLE EST_CONN_LOGIN_2 ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=2;
Query OK, 0 rows affected (1 min 36.00 sec) 
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [HIWDB]> ALTER TABLE EST_CONN_LOGIN_4 ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=4;
Query OK, 0 rows affected (54.58 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [HIWDB]> ALTER TABLE EST_CONN_LOGIN_8 ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=8;
Query OK, 0 rows affected (39.06 sec)               
Records: 0  Duplicates: 0  Warnings: 0

MariaDB [HIWDB]> ALTER TABLE EST_CONN_LOGIN_16 ENGINE=INNODB DEFAULT CHARSET=UTF8MB4 ROW_FORMAT=COMPRESSED KEY_BLOCK_SIZE=16;
Query OK, 0 rows affected (25.48 sec)
Records: 0  Duplicates: 0  Warnings: 0

 

3. 테이블 압축 결과 비교

  - 테이블 압축은 100만건을 대상으로 진행했으며, 블록 사이즈가 줄이면 압축률이 좋고 조회시간도 줄어듭니다.

     항목

    용량

     압축률

    조회시간(5회 평균)

데이터 건수

1,004,092

-

-

압축 전 용량

413,696KB

-

0.425

압축(블록 사이즈 2KB)

98,304KB

76.2%

0.390

압축(블록 사이즈 4KB)

98,304KB

76.2%

0.377

압축(블록 사이즈 8KB)

180,224KB

56.4%

0.398

압축(블록 사이즈 16KB)

352,256KB

14.9%

0.433

 

4. 테이블압축 추가 및 수정 테스트

  - DML에서 INSERT, UPDATE, DELETE 각각 변경 사이즈에 따른 수행 결과를 확인했습니다.

      항목

    Insert

    Update

    Delete

압축 전

2.83

0.02

3.59

압축(블록 사이즈 2KB)

3.5

1.19

6.75

압축(블록 사이즈 4KB)

3.2

0.63

5.63

압축(블록 사이즈 8KB)

3.15

0.32

4.34

압축(블록 사이즈 16KB)

3.09

0.19

3.95

 

5. 결론

  - 장점은 일반 테이블 보다 파일 크기를 줄일 수 있고, 데이터 조회 속도는 큰 차이가 없습니다. 단점은 DML 수행 속도가 느려지며, 과거 데이터에 대한 관리 방법이 필요하다고 판단 합니다.

Comments