Skip to end of metadata
Go to start of metadata

개요


알티베이스 서버에서 실행되는 모든 SQL 문을 trace할 수 있습니다.

알티베이스 프라퍼티를 설정/해제함으로써 가능하며, SQL문 외에 수행시간, 색인/디스크 접근 정보, PLAN 정보, 세션 정보 그리고 알티베이스 시스템 정보도 함께 trace 가능합니다.

여기에서는 알티베이스 프로파일링 및 결과 확인 방법에 대해 설명합니다.

프로파일링 관련 프로퍼티


Property Name설명
QUERY_PROF_FLAG

프로파일링 여부 및 로깅 레벨 설정

0   : 프로파일링 비활성화 (기본값)

1   : SQL문이 실행될 때마다 SQL문, 수행시간, 실행정보, 색인/디스크 접근 정보 출력

2   : prepare된 SQL문이 실행될 때마다 Bind Parameter 값 출력 (변수값 바인딩 정보가 있는 경우에 한함.)

4   : SQL문이 실행될 때마다 실행계획 출력

8   : 3초마다 세션 정보(V$SESSTAT) 출력

16  : 3초마다 시스템 정보(V$SYSSTAT) 출력

32  : 3초마다 메모리 정보(V$MEMSTAT) 출력

bit 단위로 값을 조합해서 설정도 가능합니다.

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

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

3초마다 [SESSION] [SYSTEM] [MEMORY] 순서로 알티베이스 상태 정보가 출력됩니다.

QUERY_PROF_LOG_DIR

(6.5.1 이상)

프로파일링 결과파일이 저장될 디렉토리 경로

기본값 : $ALTIBASE_HOME/trc

QUERY_PROF_BUF_SIZE

통계 정보가 저장될 버퍼 크기

기본값 : 1MBytes

범위 : 32KBytes ~ 4GBytes-1

QUERY_PROF_BUF_FLUSH_SIZE

버퍼가 얼만큼 찼을 때 flush할지 크기를 설정

기본값 : 32KBytes

범위 : 512Bytes ~ 4GBytes-1

QUERY_PROF_BUF_FULL_SKIP

통계정보 버퍼가 가득찰 경우에, 프로파일링을 안하고 건너뛸 것인지 모두 기록될 때까지 대기할 것인지를 선택.

기본값 : 1

범위 : 0(wait) 또는 1(skip)

QUERY_PROF_FILE_SIZE

프로파일링 로그파일의 최대 크기

기본값 : 100MBytes

범위 : 0 ~ 4GBytes-1

          0  : Limited by OS limits

        > 0 : 해당 크기 만큼 로그를 기록하고, close 후, 새로운 파일을 생성하여 계속 로깅함.

                로그파일명은 alti-#시간-#번호.prof와 같은 형식으로 만들어지며 번호는 0부터 시작해서 1씩 증가함

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


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

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

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

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

 

  • No labels