코딩공부/DB

시계열데이터 PostgreSQL Timescale 압축률과 조회속도

표자 2025. 4. 23. 10:22

📦 압축률 (Compression Ratio)

일반적으로 90~95% 감소 (원본 대비 5~10% 크기)가 대표적입니다.

사례 유형 원본 크기 압축 후 크기 압축률

금융 틱 데이터5 694 MB 75 MB 89% ↓
IoT 센서 데이터1 100 GB ~5-10 GB 90-95% ↓
시계열 로그 데이터7 1 TB ~50-100 GB 90-95% ↓

핵심 메커니즘:

  • 컬럼 기반 압축(Array 형식 저장) + 중복 제거
  • segmentby(그룹화 컬럼)와 orderby(정렬 컬럼) 설정에 따라 효율성 차이5

조회 성능 향상

시간 기반 청크(Chunk) 사용 시 50~90% 쿼리 시간 단축이 일반적입니다. 주요 요인별 개선 효과:

1. 시간 필터 쿼리

SELECT * FROM sensor_data WHERE time >= NOW() - INTERVAL '3 days';

  • 청크 미사용: 전체 데이터 스캔 → 100% 시간 소요
  • 청크 사용: 3개 청크만 접근 → 70-90% 성능 향상

2. 병렬 처리 효율

  • 청크 단위 병렬 쿼리 실행으로 CPU 활용도 향상
  • 8코어 서버에서 4-6배 빠른 응답

3. 인덱스 효율성

  • 청크별 로컬 인덱스 사용으로 검색 범위 축소
  • 1억 건 데이터에서 0.1초 이내 응답 사례

💡 결론

  • 저장 공간: 100GB 데이터 → 5-10GB로 압축
  • 성능: 시간 범위 쿼리 → 초당 수십만 건 처리 가능
  • 실제 환경에서는 데이터 특성과 쿼리 패턴에 따라 결과 차이 발생

참고: Timescale 공식 벤치마크에 따르면, 10TB 데이터에서 94% 압축률 + 83% 쿼리 성능 향상 사례가 보고됐습니다6.

청크 기반 조회 성능 향상

시간별 청크(chunk)는 다음과 같은 성능 향상을 제공합니다:

  1. 시간 범위 쿼리: 특정 기간 데이터 조회 시 약 2-10배 빠름
    • 예: 지난 24시간 데이터 조회 시 일반 PostgreSQL보다 약 5배 빠름
  2. 집계 쿼리(AVG, SUM 등): 약 3-15배 성능 향상
    • 예: 일주일 데이터의 시간별 평균값 계산 시 약 8배 빠름
  3. 최근 데이터 + 과거 데이터 혼합 쿼리: 약 2-5배 성능 향상
    • 예: 최근 데이터와 1년 전 데이터 비교 시 약 3배 빠름
  • 실제 TimescaleDB 벤치마크 결과
    • 쿼리 평균 실행 시간(예: 12시간 구간 평균값 조회)
      • 청크 미사용: 평균 2,528ms (약 2.5초)
      • 청크 사용: 평균 430ms (약 0.4초)
    • 이 경우 약 83% 단축 (2.5초 → 0.4초)
728x90