현재 선택한 정보처리 과정

정보처리기사 필기 이론 학습

이론 목록으로 돌아가기

쿼리 성능 측정과 프로시저 최적화

쿼리의 추정 비용과 실행시간을 구분하고 동일한 조건에서 프로시저의 성능 개선을 검증한다.

예상 읽기 2

쿼리 성능 측정

쿼리 성능은 응답시간, 실행 횟수, 처리한 데이터 양과 자원 사용을 함께 살핀다. 한 번 느린 쿼리뿐 아니라 짧은 쿼리를 반복 호출하여 전체 비용이 커지는 경우도 확인한다.

자료해석
실행 계획의 추정 비용DBMS가 계획을 비교하기 위해 계산한 값
실측 실행시간실제 실행을 관측한 시간
호출 횟수관측 구간에 실행된 횟수
호출별 시간의 합호출 횟수 × 호출당 평균 시간

추정 비용은 일반적으로 밀리초와 같은 실제 시간 단위가 아니다. 단위가 다른 값끼리 더하거나 빼지 않는다. 병렬 호출의 시간 합계와 작업 시작부터 끝까지의 경과시간도 구분한다.

예를 들어 A 쿼리가 10회·평균 20ms, B 쿼리가 2회·평균 80ms이면 합산 시간은 A 200ms, B 160ms다. 전체 호출의 평균은 (200+160)/(10+2)=30ms이며 두 평균의 단순 평균과 다르다.

변경 전후의 비교 조건

데이터 양·분포, 시스템 사양, 동시 부하, 캐시 상태를 맞추고 여러 번 측정한다. 캐시가 비어 있는 첫 실행과 이미 준비된 반복 실행을 비교하면 코드 변경만의 효과를 판단하기 어렵다.

목록을 한 번 조회한 뒤 각 항목을 다시 조회하면 항목이 n개일 때 총 n+1회가 된다. 일괄 조회로 호출을 줄일 수 있지만 실제 개선 여부는 측정하고, 결과의 누락·중복·오류가 없는지도 확인한다.

프로시저 최적화와 소스코드 인스펙션

먼저 시간이 많이 드는 구간을 찾고 불필요한 호출·반복 처리·중복 계산을 줄인다. 변경 후에는 정상 결과와 오류 처리가 유지되는지 단위 테스트하고 성능을 다시 측정한다.

소스코드 인스펙션은 코드를 실행하지 않고 체계적으로 검토하여 초기화 누락, 잘못된 조건, 실행되지 않는 코드 등 결함 후보를 찾는 정적 검토다. 실행시간을 계측하는 프로파일링과 구분한다. 품질분석 도구와 코드 최적화 기법은 ‘애플리케이션 성능·품질 분석과 최적화’에서 다룬다.