Try it First
로그인
Try it First
로그인
RealMySQL 1 : 6장 데이터 압축
일단 해볼게
·
2024년 10월 4일
팔로우
0
RealMySQL
book
0
book
목록 보기
16/18
페이지 압축
MySQL 서버가 디스크에 저장하는 시점에 데이터 페이지가 압축되어 저장
MySQL 서버가 디스크에서 데이터 페이지를 읽어올 때 압축 해제
펀치 홀이라는 페이지 압축 기능 제공
운영체제별로 특정 버전의 파일 세스템에서만 지원
예시
16KB 페이지를 7KB로 압축하면 9KB는 펀치 홀
디스크의 9KB 펀치 홀을 운영체제로 반납
문제
하드웨어 자체에서도 해당 기능을 지원해야 사용 가능
파일 시스템 관련 명령어(유틸리티)가 펀치 홀 지원하지 못한다.
데이터 백업 및 복구하는 과정에서 데이터 복사 등 많은 유틸리티 사용
실제 페이지 압축은 많이 사용되지 않는 상태
테이블 압축
운영체제나 하드웨어에 대한 제약 없이 사용 가능
문제
버퍼 풀 공간 활용율 낮음
쿼리 처리 성능 낮음
빈번한 데이터 변경 시 압축률 떨어짐
압축된 페이지 타깃의 크기는 2n (n은 2이상)으로만 설정 가능
페이지 크기가 16KB라면 4, 8KB만 가능
페이지 크기가 32, 64KB라면 테이블 압축 적용 불가능
예시
16KB 데이터 페이지 압축
압축 결과가 8KB 이하면 그대로 디스크에 저장
압축 결과가 8KB 초과하면 원본 페이지를 스플릿해서 2개의 페이지에 8KB씩 저장
나뉜 페이지 각각에 대해 1번 압축 단계를 반복 실행
InnoDB I/O 레이어는 아무런 역할하지 않는다.
[중요]
압축 결과를 예측해서 KEY_BLOCK_SIZE를 결정
압축된 페이지의 버퍼 풀 적재 및 사용
압축된 페이지를 버퍼 풀에 적재하면 압축된 상태와 해제된 상태 2개 버전 관리
LRU 리스트, Unzip_LRU 리스트
압축 및 압축 해제는 CPU를 상대적으로 많이 소모
일단 해볼게
시도하고 More Do하는 백엔드 개발자입니다.
팔로우
이전 포스트
RealMySQL 1 : 5장 트랜잭션과 잠금
다음 포스트
RealMySQL 1 : 7장 데이터 암호화
0개의 댓글
댓글 작성