일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- command & perl
- memory
- solaris
- sqlplus
- patch
- SQL
- bash
- Unix
- dba
- MySQL
- perl string
- 연산자
- Oracle RAC
- fdisk
- rac
- 오라클
- php5
- prompt
- oracle
- Network
- grid
- solaris network
- mariaDB
- perl one-liner
- Linux
- PERL
- cygwin
- RHEL4
- perl + 정규표현식
- oracle install
- Today
- Total
DATA 전문가로 가는 길
[Admin] MariaDB/MySQL InnoDB 테이블 압축(Compression) 본문
[Admin] MariaDB/MySQL InnoDB 테이블 압축(Compression)
EstenPark 2019. 8. 7. 10:191. 테이블 압축 개요
증가하는 데이터로 인해서 서버의 저장공간이 부족 혹은 추가적인 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 수행 속도가 느려지며, 과거 데이터에 대한 관리 방법이 필요하다고 판단 합니다.
'Data Architecture > Admin' 카테고리의 다른 글
[Admin] Oralce 파라미터 설정 자동 가이드(audit_trail, processes, archive log directory, _diag_daemon, memory_target) (1) | 2019.08.16 |
---|---|
[Admin] MariaDB/MySQL Linux Filesystem Cache(unmap) 메모리 초기화 (0) | 2019.08.09 |
[Admin][MariaDB] DB 생성 과 테이블 조작(DDL, DML) (0) | 2016.08.04 |
[Admin][MariaDB] JSON 테이블에 적재(Json Table Type) (0) | 2016.04.18 |
[Admin][Oracle] User Process 파라미터 지정 (0) | 2016.02.29 |