개요
알티베이스 서버에서 실행되는 모든 SQL 문을 trace할 수 있습니다.
알티베이스 프라퍼티를 설정/해제함으로써 가능하며, SQL문 외에 수행시간, 색인/디스크 접근 정보, PLAN 정보, 세션 정보 그리고 알티베이스 시스템 정보도 함께 trace 가능합니다.
여기에서는 알티베이스 프로파일링 및 결과 확인 방법에 대해 설명합니다.
프로파일링 관련 프로퍼티
프로파일링 시작 및 중지 방법
- 프로파일링 시작
다음 명령어 수행 후부터 실행되는 모든 SQL문에 대한 정보를 로그파일에 기록합니다.
ALTER SYSTEM SET QUERY_PROF_FLAG = value;
ALTER SYSTEM SET TIMED_STATISTICS = 1;
value : 위 QUERY_PROF_FLAG 프로퍼티 설명을 참고합니다.
TIMED_STATISTICS : 5.1.5 이상 버전에서 SQL문의 수행시간을 확인하기 위해서는 이 프로퍼티 값을 1(기본값은 0)로 설정해야 합니다. (그 이하버전에서는 해당 프로퍼티가 없으며, 디폴트로 모든 SQL문의 수행시간 확인이 가능합니다.)
- 프로파일링 중지
프로파일링을 중지하려면 다음 명령어를 수행합니다.
ALTER SYSTEM SET QUERY_PROF_FLAG = 0;
결과 분석 방법
프로파일링을 시작하면 $ALTIBASE_HOME/trc/alti#시간-#번호.prof 형식으로 로그파일이 생성됩니다. (6.5.1 이상 버전에서는 QUERY_PROF_LOG_DIR 프로퍼티에 로그파일 경로 설정 가능)
로그파일은 이진형태이므로 altiProfile 명령어를 이용하여 텍스트 파일로 변환해야 하며 방법은 아래와 같습니다.
$ altiProfile alti-#시간-#번호.prof > #번호.out
로그파일 변환결과가 stdout으로 출력되므로 위 예제와 같이 파일로 저장하는 것을 권장합니다.
다음은 변환된 결과 내용에 대한 설명입니다.
- QUERY_PROF_FLAG = 1 로 설정한 경우
[STATEMENT] 기록시간 ( 세션_ID/SQL문_ID/트랜잭션_ID )
SQL 문
사용자 정보 :
실행 소요 시간
실행 정보 : 성공/실패 여부 및 성공/실패 건수
색인 접근 정보
디스크 접근 정보
- QUERY_PROF_FLAG = 2 로 설정한 경우
prepare된 SQL문에 바인드 되는 변수값을 출력하지만 binary 타입으로 출력되어 사용자가 분석할 수 없습니다.
- QUERY_PROF_FLAG = 4 로 설정한 경우
SQL문의 실행을 위해 생성되는 실행계획 정보를 출력합니다.
- QUERY_PROF_FLAG = 8 로 설정한 경우
현재 서버에 생성된 모든 세션에 대해, 아래와 같이 세션정보가 기록되며 select * from v$sesstat order by sid, seqnum 실행결과와 동일합니다.
[SESSION STAT] 기록시간 (세션_ID)
필드명 = 값
- QUERY_PROF_FLAG = 16 로 설정한 경우
알티베이스 시스템의 전반적인 내용을 출력하며 select * from v$sysstat order by seqnum 실행 결과와 동일합니다.
- QUERY_PROF_FLAG = 32 로 설정한 경우
해당 시점에서 알티베이스 모듈별 메모리 사용량을 출력하며 select * from v$memstat order by seqnum 실행 결과와 동일합니다.
[MEMORY STAT] 기록시간
모듈명 : (현재 사용 메모리량 / 단위 메모리 갯수 / 사용했던 최대 메모리량)
주의사항
프로파일링을 활성화 할 경우, 알티베이스 서버 내에서 실행되는 모든 SQL문에 대해 수행정보를 로그파일에 기록하며, 설정에 따라 3초 주기로 알티베이스 상태를 프로파일링하므로, 알티베이스 성능에 영향을 줄 뿐만 아니라 시스템에도 부하를 줄 수 있습니다.
또한 프로파일링에 의한 로그 기록으로 디스크 사용량이 높아져 디스크 풀 발생 가능성도 있습니다.
따라서 기본적으로 운영 서버에서 프로파일링을 활성화하는 것은 권장하지 않습니다.
테스트, 성능 분석 및 튜닝 시에 단시간 사용하기를 권장하며, 프로파일링 할 때 반드시 디스크 사용량을 함께 모니터링하여 적절히 중지하시기 바랍니다.