✅ 1. Row Compression (로우 압축)
🔹 작동 방식
- 고정 길이 데이터를 가변 길이로 저장하여 공간 절약
- 예:
CHAR(100)
→ 실제 값이 10자일 경우, 10자만 저장
- NULL 및 0 값을 더 간단하게 저장
🔹 장점
- CPU 부하가 적음
- 성능에 거의 영향을 주지 않음
- 읽기/쓰기 속도 저하가 크지 않음
🔹 단점
✅ 2. Page Compression (페이지 압축)
🔹 작동 방식
- Row 압축 + 추가로 패턴 인식(Dictionary encoding, Prefix compression 등) 을 통해 중복 제거
- 하나의 페이지 내에서 데이터의 공통 부분을 찾아 압축
🔹 장점
- 압축률이 높음 (보통 30~70%)
- 저장 공간 크게 절약
- IO 줄어들어 읽기 성능이 향상되는 경우 있음
🔹 단점
- CPU 부하 큼 (읽기/쓰기/압축 시 모두)
- INSERT/UPDATE가 빈번한 경우 성능 저하 가능
🆚 언제 무엇을 선택할까?
상황 | 권장 압축 방식 |
---|
읽기 위주의 테이블 (OLAP, DW) | ✅ Page 압축 |
자주 갱신되거나 쓰기가 많은 테이블 (OLTP) | ✅ Row 압축 또는 압축 없음 |
공간 절약이 최우선 | ✅ Page 압축 |
성능이 최우선 | ✅ Row 압축 또는 압축 없음 |
테스트 용도로 점진적 적용 | ✅ Row 압축부터 시도 후 분석 |
🎯 실전 팁
sp_estimate_data_compression_savings
시스템 저장 프로시저를 사용하면 Row, Page 압축을 적용했을 때 예상되는 공간 절약량을 확인할 수 있습니다.
EXEC sp_estimate_data_compression_savings
@schema_name = 'dbo',
@object_name = 'YourTableName',
@index_id = NULL,
@partition_number = NULL,
@data_compression = 'PAGE';
🔚 결론
- 읽기 위주, 대량 데이터 → Page 압축 유리
- 쓰기/갱신 많은 OLTP 테이블 → Row 압축 또는 압축 없이 운영
- 테스트로 압축 이점 확인 후 적용이 가장 안전