6.1 페이지 압축
MySQL 서버 디스크에 저장된 데이터 파일의 크기가 클수록 다음의 문제가 발생한다.
- 쿼리를 처리하기 위해 더 많은 데이터 페이지를 버퍼 풀로 읽어야 한다.
- 그로인해 새 페이지가 버퍼 풀에 적재되고, 그만큼 더티 페이지가 더 자주 디스크로 기록돼야 한다.
- 백업 시간과 복구 시간이 오래 걸린다.
- 저장 공간이 많이 필요하기에 비용도 많이 든다.
페이지 압축
- Transparent Page Compression이라고도 불린다.
- 저장하는 시점에 데이터 페이지를 압축, 읽을 때 압축을 해제하기 때문
- 16KB 데이터 페이지를 압축한 결과 용량을 예측 불가능하다.
- 하지만 적어도 하나의 테이블은 동일한 크기의 페이지(블록)로 통일돼야 한다.
펀치 홀
- 동일한 크기의 페이를 보장하기 위해 사용하는 압축 기능
- 운영체제별로 특정 버전의 파일 시스템에만 지원됨
- 특정 테이블에 대해 16KB 크기의 페이지를 유지하면서 다양한 크기의 데이터 페이지를 저장하고 압축한 만큼 공간을 절약할 수 있다.
페이지 압축 문제점
- 펀치 홀 기능이 운영체제 뿐 아니라 하드웨어 자체에도 해당 기능을 지원해야 사용 가능하다.
- 파일 시스템 관련 명령어(유틸리티)가 펀치 홀을 지원하지 못한다.
- MySQL 서버는 백업, 복구 과정 등에서 많은 파일 관련 유틸리티를 사용한다.
- 실제 페이지 압축은 이러한 이유로 많이 사용되지 않는다.