SQL BOOSTER의 서른 한 번째 이어지는 이야기입니다.
주제는 빅 테이블의 용량 산정입니다.
PDF로 퍼가실 분은 아래 파일을 바로 받아가시면 됩니다.
31. 빅 테이블의 용량 산정
기업의 데이터는 계속 쌓여가고 늘어납니다. 그것도 쉴 새 없이요. 그리고 최근에는 더 폭발적으로 늘어나고 있습니다.
데이터가 문제없이 쌓이도록 하기 위해서는 필요한 디스크 공간을 미리 산정해야 합니다. 디스크 공간 확보를 위해서는 비용(Money)이 필요하기 때문입니다. 오늘은 빅 테이블의 용량을 산정하는 법에 대해 살펴보겠습니다. 어렵지 않으며, 모두가 알만한 이야기입니다. 리마인드 개념으로 한 번 읽어 보시기 바랍니다.
1,000G(Giga)의 판매 테이블이 있다고 가정하도록 하겠습니다. 해당테이블에는 2021년 1월부터 2023년 12월까지 2년 간의 데이터가 존재합니다. 테이블 용량이 너무 커서 해당 테이블이 내년에는 얼만큼 늘어날지 걱정이 된다고 합니다.
이 상황에서 가장 간단한 용량 산정 방법은, 2년 간의 데이터가 1,000G의 용량을 차지하므로 2024년에는 1,000G의 절반인 500G가 필요하다고 산정하는 것입니다.
여기서는 이처럼 간단한 방법이 아닌, 월별로 데이터를 살펴보고 그에 따른 증가양을 분석해 2024년의 테이블 용량을 산정하려 합니다. 현대의 데이터는 날이 갈수록 쌓이는 양이 늘어나고 있습니다. 데이터의 특징(업무의 특징)에 따라 다르겠지만, 많은 생활들이 디지털화되면서 그에 맞추어 디지털로 입력되는 데이터의 양 역시 늘어나고 있습니다.
그러므로 1000G의 절반을 2024년의 디스크 용량으로 산정하기 보다는 월별로 변경되는 데이터의 양을 조사해 디스크 크기를 산정하는 것이 보다 합리적입니다.
우선 판매 테이블의 년월별 데이터 건수를 조사합니다. 이를 통해 아래와 같은 표를 만들어 낼 수 있습니다.
테이블의 전체 용량은 1,000G이고 테이블의 총 건수는 60.38 억 건입니다. 1월달의 판매 데이터가 1.32 억 건이므로 아래와 같은 계산을 통해 1월달이 차지하는 디스크 용량을 추정해 볼 수 있습니다.
- ROUND(1.32 / 60.38 * 1000,2) = 21.86 G
위 식을 각 월별로 모두 적용해 월별로 용량을 추정해볼 수 있습니다. 위의 표에서 노란색 부분이 월별로 용량을 추정한 부분입니다. 각 월별 용량을 모두 합해 보면 1,000G가 되는 것을 알 수 있습니다.
이제, 위 데이터를 근거로 2024년 12월까지의 디스크 용량을 산정하면 됩니다. 이때 다양한 방법을 고려할 수 있습니다.
여기서는 “최근 6개월 간의 용량 증감의 평균 값”을 사용해 용량을 산정할 계획입니다.
(이 기준은 각자가 생각하는 적정한 수준으로 정하면 되겠지요.)
“최근 6개월 간의 용량 증감의 평균 값”을 구하기 위해서는, 먼저 각 월별로 전월 대비 증감한 용량을 구합니다.
그리고 최근 6개월의 증가에 대해서만 평균을 구하면 됩니다. 아래 표의 녹색 부분에 해당합니다.
최근 6개월 간의 용량 증감 평균이 1.02G가 나옵니다.
이제 이 1.02G란 값을 적용해 2024년의 디스크 공간을 산정하면 됩니다. 2024년 1월 용량은 2023년 12월 용량인 56.64에 1.02를 더한, 57.66이 됩니다. 이 계산을 2024년 각 월에 적용해 2024년 디스크 공간을 산정할 수 있습니다.
판매 테이블의 디스크 용량 산정에 대한 최종 결과는 아래 차트와 함께 “최근 6개 월 간의 판매 테이블의 데이터 증가양을 고려했을 때, 2024년 판매 데이터를 위해서는 최소 759G의 디스크 확보가 필요합니다.”라고 마무리할 수 있습니다.
이상입니다.
지난 SQL BOOSTER 이어지는 이야기 URL
- [01]SQL을 변경한 성능 개선. 01: https://cafe.naver.com/dbian/2483
- [02]LISTAGG & 테이블의 인덱스 확인하기: https://cafe.naver.com/dbian/2495
- [03]꽤 괜찮은 기준일자 테이블: https://cafe.naver.com/dbian/2496
- [04]SQL을 변경한 성능 개선. 02: https://cafe.naver.com/dbian/2512
- [05]범위 조건을 같다 조건으로 바꿔주는 기준일자 테이블: https://cafe.naver.com/dbian/2516
- [06]SQL을 변경한 성능 개선. 03: https://cafe.naver.com/dbian/2524
- [07]쓸데 없는 MINUS??: https://cafe.naver.com/dbian/2543
- [08]고객별 마지막 주문을 구하는 SQL: https://cafe.naver.com/dbian/2564
- [09]SQL 개발 가이드 - 어떻게 지킬 것인가?: https://cafe.naver.com/dbian/2593
- [10]잘 되던 LIKE도 다시 보자: https://cafe.naver.com/dbian/2613
- [11]엑셀업로드 테이블의 설계와 사용: https://cafe.naver.com/dbian/2643
- [12]업로드 마스터 테이블: https://cafe.naver.com/dbian/2684
- [13]전체 검색을 위한 NVL: https://cafe.naver.com/dbian/5215
- [14]어떤 인덱스를 제거할까?: https://cafe.naver.com/dbian/5244
- [15]튜닝-쿼리를 이해하자: https://cafe.naver.com/dbian/5442
- [16]튜닝-서브쿼리 + NVL? CASE?!: https://cafe.naver.com/dbian/5447
- [17]튜닝-ORDER BY FETCH를 이용한 페이징: https://cafe.naver.com/dbian/5464
- [18]튜닝-ORDER BY FETCH를 믿지 마세요.: https://cafe.naver.com/dbian/5468
- [19]운영 중 시스템의 인덱스 변경 스크립트: https://cafe.naver.com/dbian/5495
- [20]튜닝-GROUP BY SORT 부하를 제거하자 - IN을 UNION ALL로: https://cafe.naver.com/dbian/5498
- [21]튜닝-이렇게 큰 자료형은 HASH GROUP BY를 할 수 없습니다.: https://cafe.naver.com/dbian/5680
- [22]튜닝- 튜너는 SQL을 잘해야 하나요? YES!!!: https://cafe.naver.com/dbian/5693
- [23]성능 관점에서 생각해 본 RDBMS 최악의 기능 - View: https://cafe.naver.com/dbian/6033
- [24]INDEX DESC 힌트가 적절한가?: https://cafe.naver.com/dbian/6133
- [25]INDEX DESC 힌트는 ORDER BY와 함께: https://cafe.naver.com/dbian/6181
- [26]데이터의 특성을 이해하고 생각해보면 답이 있다.: https://cafe.naver.com/dbian/6182
- [27]사용하면 안되는 CTE 재귀를 통한 튜닝 : https://cafe.naver.com/dbian/6736
- [28]채번 관련 내용 돌아보기: https://cafe.naver.com/dbian/6759
- [29]튜닝-고객별 마지막 한 건!을 찾는 배치 작업: https://cafe.naver.com/dbian/6772
- [30]PK가 아닌 컬럼을 참조했을 때의 혼돈: https://cafe.naver.com/dbian/7069
끝으로 SQL 관련해 아래와 같은 강의를 진행하고 있으니 많은 관심 부탁드립니다.
- StartUP Tuning For PostgreSQL: PostgreSQL을 활용한 SQL 튜닝 입문 교육
https://cafe.naver.com/dbian/7181
- StartUP Tuning For MySQL: MySQL을 활용한 SQL 튜닝 입문 교육
https://cafe.naver.com/dbian/6958
- 평생필요한 데이터 분석: 저자 직강!, 주식 데이터를 활용한 SQL 입문자 교육
'SQL > SQL BOOSTER' 카테고리의 다른 글
조인의 기초 개념을 한장의 그림으로 이해하자! (1) | 2023.12.21 |
---|---|
파티셔닝으로 비용을 파티션한다: 클라우드 환경에서 지출을 줄이는 전략 (0) | 2023.12.13 |
SQL BOOSTER 이어지는 이야기 .12 (0) | 2020.10.28 |
SQL BOOSTER 이어지는 이야기 .11 (0) | 2020.10.28 |
SQL BOOSTER 이어지는 이야기 .10 (0) | 2020.10.27 |
SQL BOOSTER 이어지는 이야기 .08 (0) | 2020.10.26 |
SQL BOOSTER 이어지는 이야기 .07 (0) | 2020.10.26 |
SQL BOOSTER 이어지는 이야기 .06 (0) | 2020.10.26 |