← 이슈 기록 목록

숫자가 미묘하게 작게 나온다면 단위를 의심하라

MyBatisMariaDBBatchTesting

01이슈 및 현상

hourly/daily/monthly/yearly 통계 배치의 순시값(inst) 집계 결과가 원본보다 미묘하게 작게 저장되고 있었습니다. 크게 틀린 게 아니라 한눈에 알아차리기 어려운 왜곡이었습니다.

02원인 파악

집계 SQL이 순시값에 SEND_PERIOD/3600을 불필요하게 곱해, 이미 적절한 단위로 들어온 값에 시간 단위 보정을 한 번 더 적용하고 있었습니다. 여기에 날짜 폴백 포맷도 %Y%m%d%H%i%s여야 할 자리에 %Y%m%d%H가 들어가 특정 조건에서 날짜 매칭이 어긋났습니다.

03해결 방안

4개 매퍼 SQL에서 불필요한 단위 변환을 제거하고 날짜 포맷을 바로잡은 뒤, hourly/daily/monthly/yearly 각 단위별로 단위 테스트를 작성해 회귀를 막았습니다. 같은 배치를 손보던 중 트리 최상위(depth=0) 집계가 조회 조건에서 통째로 빠져 있던 것도 함께 발견해 조건을 보완했습니다.

04결과 및 성과

통계값이 원본과 일치하도록 정정됐고, 단위 테스트로 재발을 방지하는 안전장치를 확보했습니다. depth=0 누락까지 해소해 집계 정확도를 전 구간에서 맞췄습니다.