Search
Duplicate
1️⃣

페이지 압축

: 페이지 압축은 Transparent Page Compression이라고도 불리는데 MySQL 서버가 저장 시, 데이터를 압축, 불러올 시 데이터를 해제하기 때문, 즉 버퍼 풀에 한 번 적재되면
InnoDB 스토리지 엔진은 압축이 해제된 상태로만 데이터 페이지를 관리함, 그래서 MySQL 서버의 내부 코드에서는 압축 여부와 관계없이 Transparent하게 작동함
이 경우, 문제점이 하나 발생하는데, 16KB 데이터 페이지를 압축한 결과가 용량이 얼마나 될지 예측이 불가능한데 적어도 하나의 테이블은 동일한 크기의 페이지로 통일되야 함
: 그래서 페이지 압축 기능은 운영체제 별로 특정 버전의 파일 시스템에서만 지원되는 펀치 홀이라는 기능을 사용함, 운영체제의 블록 사이즈가 512바이트인 경우, MySQL 서버는
특정 테이블에 대해 16KB의 페이지를 유지하면서도 압축된 다양한 크기의 데이터 페이지를 디스크에 저장하고 압축된 만큼의 공간을 절약할 수 있음
: 즉, 디스크 파일에 미리 압축해놓아 데이터를 I/O할 때 더 빠르게 하기 위함
: MySQL 서버의 페이지 압축이 가진 문제는 펀치홀 기능은 운영체제뿐만 아니라 하드웨어 자체에서도 해당 기능을 지원해야한다는 것
: 페이지 압축을 사용하려면 테이블을 생성하거나 변경할 때 COMPRESSION 옵션을 설정하면 됨