MySQL 네 가지 ROW형식(REDUNDANT, COMPACT, DYNAMIC, COMPRESSED)

김기욱·2020년 12월 10일
0
post-thumbnail
명 칭컴팩트 저장가변 길이의 컬럼 저장긴 길이의 인덱스 접두사 지원압축 지원지원되는 테이블 공간유형필수파일 형식
REDUNDANT지원안함지원안함지원안함지원안함system, file-per-table, generalAntelope & Barracuda
COMPACT지원지원안함지원안함지원안함system, file-per-table, generalAntelope & Barracuda
DYNAMIC지원지원지원지원안함system, file-per-table, generalBarracuda
COMPRESSED지원지원지원지원system, file-per-table, generalBarracuda

REDUNDANT

이전버전 MYSQL과 호환성을 제공해주는 ROW형식입니다. 기존의 파일형식인 Antelope뿐만 아니라 5.0버전 이후 추가된 Barracuda에 대해서도 지원을 해줍니다.

열의 값이 768 바이트 이하인 경우 오버플로 페이지가 사용되지 않으며 값이 B- 트리 노드에 전적으로 저장되기 때문에 I / O가 약간 절약 될 수 있습니다. 이는 상대적으로 짧은 BLOB열 값에 적합하지만 B- 트리 노드가 키 값이 아닌 데이터로 채워져 효율성이 떨어질 수 있습니다. BLOB열이 많은 테이블은 B- 트리 노드가 너무 가득 차고 너무 적은 행을 포함하여 행이 더 짧거나 열 값이 페이지 외부에 저장된 경우보다 전체 인덱스의 효율성이 떨어질 수 있습니다.

COMPACT

REDUNDANT와 마찬가지로 기존과 새로추가된 파일 형식 모두를 지원합니다.(Antelope과 Barracuda)

REDUNDANT와 비교했을 때 약 20 %의 열 저장 공간을 줄여줍니다. 일반적인 워크로드 방식(캐시히트나 디스크 스피드가 일정한 경우)이라는 가정하에 일부작업에서 CPU사용량을 좀 더 동적으로 높일 수 있으므로, 더 빠른 속도의 퍼포먼스를 보여줄 수 있습니다. 다만 워크로드가 제한된 CPU속도를 바탕으로 실행되고 있는 경우에는 REDUNDANT보다 더 느릴 수 있습니다.

DYNAMIC

INNODB와 기본 행 형식입니다. 행 형식을 따로 지정하지 않을 경우 이노디비로 지정된 모든 테이블 형식은 DYNAMIC으로 자동선택됩니다. DYNAMIC의 가장 큰 특징은 두 가지 입니다.

첫째로는 파일형식은 무조건 Barracuda만 쓸 수 있다는 점이고, 두 번째로는 VARCHAR, VARBINARY, and BLOB and TEXT와 같은 가변적인 성질의 컬럼형식들을 완전하게 쓸 수 있다는 점입니다.(기존의 두 가지 방식들은 VARCHAR로 포맷팅 하더라도 디비에서는 실제로 CHAR 인식하게 됩니다.)

또한 REDUNDANT, COMPACT방식에서 767바이트로 제한되는 인덱스 키 접두사 제한이 3072바이트로 확장되어있습니다. 저장방식은 컴팩트와 유사합니다.

COMPRESSED

컴프레스는 기본적으로 다이나믹과 매우 흡사합니다. 똑같은 저장방식과 기능을 가지고 있습니다. 다만 한 가지 기능을 더 구사할 수 있는데, '압축'이라는 기능입니다.
컴프레스는 테이블, 인덱스 데이터를 압축하거나 혹은 더 작은 페이지 사이즈 사용하기 기능을 활용해 디비의 퍼포먼스를 향상 시킬수 있습니다.

컴프레스는 KEY_BLOCK_SIZE라는 옵션을 통해 이노디비에 저장된 파일 크기를 압축해버릴 수 있습니다. 기본은 16이며 8 , 4, 2 정도로 압축률을 높이면서 저장을 가능합니다. 다만 고 압축률을 적용할때는 SELECT속도증가는 가능하나 인덱스 처럼 INSERT, UPDATE, DELETE의 성능이 떨어진다는 이슈가 확인됩니다. 그러므로 무작정 고압축을 진행하기 보다는 블록사이즈를 8정도로 해두는게 좋습니다.(Write성능 저하가 거의 일어나지않으면서 이점을 얻을수 있는 구간) Text/Varchar 형식의 컬럼이 많고 SELECT문 특히 Range Scan 쿼리가 많은 테이블에 선택적으로 적당한 압축률을 적용할 경우 성능 향상에 도움을 줄 수 있을 것 입니다.

실제 Compressed Row Format을 활용해 성능개선 테스트를 한 결과를 보고 싶으시면
돌고래 사육사님의 블로그 : https://m.blog.naver.com/PostView.nhn?blogId=seuis398&logNo=70137422809&proxyReferer=https:%2F%2Fwww.google.com%2F 를 참조해주시면 좋습니다.

profile
어려운 것은 없다, 다만 아직 익숙치않을뿐이다.

0개의 댓글