Skip to end of metadata
Go to start of metadata

개요


Altibase 서버 내에서 수행되는 작업과 서버의 상태 정보를 기록할 수 있다.

Altibase Property 항목에 의해 설정/해제함으로써 가능하며, SQL문 외에 수행시간, 색인/디스크 접근 정보, PLAN 정보, 세션 정보 그리고 Altibase 시스템 정보도 함께 수집 가능합니다.

본 문서에서는 Altibase 프로파일링 및 결과 확인 방법에 대해 설명합니다.

프로파일링 관련 프로퍼티


Property Name설명
QUERY_PROF_FLAG

서버의 상태 및 작업 내용을 수집 기록하기 위한 레벨을 설정

이름설명
0 기록하지 않음 (기본값)
1[STATEMENT]SQL 문이 실행될 때마다 실행된 SQL문, 실행시간, 실행정보, 색인 및 디스크 접근 정보 출력.
단, 실행시간이 제대로 출력되게 하려면 TIMED_STATISTICS 프로퍼티를 1로 설정해야 한다.
2[BIND]prepare된 SQL문이 실행될 때마다 Bind Parameter 값 출력 (변수값 바인딩 정보가 있는 경우에 한함.)
4[PLAN]SQL문이 실행될 때마다 실행계획 출력
8[SESSION STAT]3초마다 세션 정보 출력(V$SESSTAT 정보)
16[SYSTEM STAT]3초마다 시스템 정보 출력(V$SYSSTAT 정보)
32[MEMORY STAT]3초마다 메모리 정보 출력(V$MEMSTAT 정보)

QUERY_PROF_FLAG 값의 조합으로 다양한 서버의 상태 정보 및 작업 내용을 수집할 수 있다.

예를 들어, 7(1 + 2 + 4)로 설정하면 매 SQL문 실행시 Statement 및 수행시간, Bind 되는 변수 값, SQL 수행에 대한 Plan 정보가 출력됩니다.

또한 63(1 + 2 + 4 + 8 + 16 + 32)으로 설정하면 출력 가능한 모든 정보가 출력되는데, 매 SQL문 실행시 마다 [STATEMENT] [BIND] [PLAN] 순서로 SQL문 실행정보가 출력되며  

[SESSION STAT] [SYSTEM STAT] [MEMORY STAT] 시스템 정보는 3초마다 Altibase 상태 정보가 출력됩니다.

QUERY_PROF_LOG_DIR

Altibase에서 수행된 작업과 서버의 상태 정보가 저장될 디렉토리 경로

기본값 : $ALTIBASE_HOME/trc

Altibase 운영 중 ALTER SYSTEM 문을 이용하여 변경 가능합니다.

프로파일링 시작 및 중지 방법


  • 프로파일링 시작
    다음 명령어 수행 후부터 실행되는 모든 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 성능에 영향을 줄 뿐만 아니라 시스템에도 부하를 줄 수 있습니다.

또한 프로파일링에 의한 로그 기록으로 디스크 사용량이 높아져 디스크 풀 발생 가능성도 있습니다.

따라서 기본적으로 운영 서버에서 프로파일링을 활성화하는 것은 권장하지 않습니다.

테스트, 성능 분석 및 튜닝 시에 단시간 사용하기를 권장하며, 프로파일링 할 때 반드시 디스크 사용량을 함께 모니터링하여 적절히 중지하시기 바랍니다.

 

 

  • No labels