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