콘텐츠로 이동

altiProfile

altiProfile#

개요#

Altibase 서버 내에서 수행되는 작업과 서버의 상태 정보를 파일로 기록하여 분석할 수 있다. 서버가 남긴 상태 파일을 프로파일이라 하며 altiProfile은 이 프로파일을 문자 형태로 변환하여 출력하거나, STATEMENT 관련 데이터만 추출하여 통계 정보를 구축하여 출력한다. 이 정보를 사용하여 사용자는 시스템의 상태를 분석할 수 있다.

altiProfile [-stat query|session] {profile_name [profile_name2 [profile_name3] ...}

구문#

파라미터#

파라미터 설명
-h 도움말을 출력한다.
-stat query/session 서버가 남긴 프로파일에서 STATEMENT의 통계 정보를 구축하여, 텍스트와 CSV 형태의 파일로 출력한다.
구축되는 통계 정보에 대한 자세한 설명은 아래의 "사용 방법"을 참고하기 바란다.

설명#

서버가 남긴 프로파일을 문자 형태로 변환하거나, STATEMENT 관련 데이터만 추출하여 통계 정보를 구축한다.

사용 예#

iSQL> ALTER SYSTEM SET QUERY_PROF_FLAG = 1;
Alter success.
iSQL> ALTER SYSTEM SET TIMED_STATISTICS = 1;
Alter success.
iSQL>    --(Execute an SQL query here.)
$ cd $ALTIBASE_HOME/trc
$ altiProfile alti-1286503704-0.prof

$ altiProfile -stat query $ALTIBASE_HOME/trc/*.prof

사용 방법#

서버의 상태 및 작업 내용을 기록하려면 QUERY_PROF_FLAG 프로퍼티를 0보다 큰 값으로 설정하여야 한다. QUERY_PROF_FLAG 프로퍼티의 값에 따라 다음의 정보들이 기록된다.

이름 설명
0 기록하지 않음
1 [STATEMENT] SQL 문이 실행될 때마다 실행된 SQL문, 실행시간, 실행정보, 색인 및 디스크 접근 정보 출력.
단, 실행시간이 제대로 출력되게 하려면 TIMED_STATISTICS 프로퍼티를 1로 설정해야 한다.
TIMED_STATISTICS 프로퍼티에 대한 자세한 설명은 General Reference를 참조하기 바란다.
2 [BIND] SQL 문이 실행될 때마다 BIND 파라미터 출력
4 [PLAN] SQL 문이 실행될 때마다 실행계획 출력
8 [SESSION STAT] 3초마다 세션 정보 출력(V$SESSTAT 정보)
16 [SYSTEM STAT] 3초마다 시스템 정보 출력(V$SYSSTAT 정보)
32 [MEMORY STAT] 3초마다 메모리 정보 출력(V$MEMSTAT 정보)

위의 값을 조합하여 원하는 정보를 기록하도록 설정한다. 예를 들어, 프로퍼티를 1+4+32=37로 설정하면 SQL 문이 실행될 때마다 SQL 문의 실행정보와 실행계획을 출력하고 3초마다 메모리 정보를 출력한다.

프로퍼티가 설정되면, 서버는 alti-#시간-#번호.prof 이름의 파일에 정보를 남긴다. 사용자는 altiProfile 명령어로 상태 파일을 변환하여 분석할 수 있다.

통계 정보 출력#

altiProfile은 -stat 옵션을 사용해서 실행된 SQL문에 대한 통계 정보를 구축하고 출력할 수 있다. 이 정보는 튜닝 대상이 되는 SQL문을 찾는데 도움이 된다.

-stat query 옵션을 실행하여 구축되는 통계 정보는 아래와 같다.

  • COUNT: QUERY가 실행된 횟수

  • AVG: QUERY 수행에 걸린 평균 시간 (microseconds 단위)

  • TOTAL: QUERY 수행에 걸린 시간 합계 (microseconds 단위)

  • MIN: QUERY 수행에 걸린 최소 시간 (microseconds 단위)

  • MAX: QUERY 수행에 걸린 최대 시간 (microseconds 단위)

  • SUCCESS: QUERY 실행에 성공한 횟수

  • FAIL: QUERY 실행에 실패한 횟수

  • QUERY: 수행된 SQL문

-stat session 옵션으로 수행한다면, query 옵션을 실행하여 구축되는 통계 정보에 SESSION ID가 추가된다.

아래는 $ALTIBASE_HOME/trc 디렉토리에 생성된 모든 프로파일을 분석하여 SQL문 별로 통계 정보를 구축하는 altiProfile 실행 예제이다.

$ altiProfile -stat query $ALTIBASE_HOME/trc/*.prof

### Processing [/altibase_home/trc/alti-1423543095-0.prof]...
100% [====================]

### Writing CSV File [alti-prof-stat-1423543711.csv]...

### Writing TEXT File [alti-prof-stat-1423543711.txt]...

### Successfully done.

위에 실행 로그를 살펴보면, 통계 정보는 CSV 형식과 텍스트 형식의 파일로 저장된다. 출력된 파일의 이름은 'alti-prof-stat-#시간.csv'과 'alti-prof-stat-#시간.txt'로 자동 생성된다.

다음은 텍스트 파일의 내용이다. 통계 정보는 TOTAL 값으로 정렬되어 출력된다.

$cat alti-prof-stat-1423543711.txt
COUNT      AVG          TOTAL         MIN         MAX    SUCCESS  FAIL   QUERY
===========================================================================================================
     5     0.003730     0.018650     0.003035     0.004640     5     0    DROP VIEW REVENUE
     5     0.003523     0.017616     0.003004     0.003745     5     0    CREATE VIEW REVENUE (
...

다음은 CSV 파일의 내용이다. 텍스트 파일과 동일한 내용이 CSV 형식으로 출력된다. CSV 형식의 파일은 excel 같은 스프레드시트 애플리케이션을 사용해서 사용자가 원하는 포맷으로 가공할 수 있다.

$ cat alti-prof-stat-1423543711.csv
COUNT,AVG,TOTAL,MIN,MAX,SUCCES,FAIL,QUERY
5,  0.003730,  0.018650,  0.003035,  0.004640,5,0,"DROP VIEW REVENUE"
5,  0.003523,  0.017616,  0.003004,  0.003745,5,0,"CREATE VIEW REVENUE (
...

주의 사항#

프로파일링 기능을 동작시킬 경우, 서버 내에서 실행되는 모든 SQL 문에 대해 실행 정보를 기록하며 또한 매 3초마다 세션 및 시스템 정보 등 서버의 상태를 기록하므로 시스템에 부하를 줄 수 있다.

또한 프로파일링 기능을 설정할 때 프로파일이 커져 디스크가 꽉 찰 수 있으므로 신중해야 한다.

출력항목#

다음과 같은 형식으로 출력된다.

[STATEMENT]
..
[BIND]
..
[PLAN]
..
[SESSION STAT]
..
[SYSTEM STAT]
..
[MEMORY STAT]
..

각 정보는 아래와 같은 형식으로 출력된다.

[STATEMENT]#

다음의 표는 실행한 STATEMENT에 대한 정보를 나타낸다.

필드 이름 설명
SQL 문자열 실행된 SQL 문
User Info
User ID INTEGER 사용자 식별자
Client PID BIGINT 클라이언트 프로세스 아이디
Client Type VARCHAR(40) 접속한 클라이언트의 타입
Client AppInfo VARCHAR(128) 클라이언트의 정보 문자열
Elapsed Time for this SQL statemen
Total BIGINT 총 쿼리 수행 시간
Parse BIGINT 파싱 수행 시간
Valid BIGINT 정당성 검사 수행 시간
Optim BIGINT 최적화 수행 시간
Execu BIGINT 실행 수행 시간
Fetch BIGINT Fetch 수행 시간
Query Execute Info
EXECUTE Result INTEGER 0: failure 1: rebuild 2: retry 3: queue empty 4: success
Optimizer Mode BIGINT 최적화 모드
Cost Mode BIGINT 최적화 비용
Used Memory BIGINT 향후 확장 예정
SUCCESS SUM BIGINT 실행 성공 횟수의 총합
FAILURE SUM BIGINT 실행 실패 횟수의 총합
PROCESSED ROW BIGINT 처리된 레코드 개수
Result Set Info
FETCH Result INTEGER 0: failure 1: success 2: no results
Index Access Info
Memory Full Scan Count BIGINT 메모리 테이블에 대한 Full Scan이 발생한 횟수
Memory Index Scan Count BIGINT 메모리 테이블에 대한 Index Scan이 발생한 횟수
Disk Full Scan Count BIGINT 디스크 테이블에 대한 Full Scan이 발생한 횟수
Disk Index Scan Count BIGINT 디스크 테이블에 대한 Iindex Scan이 발생한 횟수
Disk Access Info
READ DATA PAGE BIGINT 질의 수행 시 디스크 페이지에 대한 읽기 연산 횟수
WRITE DATA PAGE BIGINT 사용하지 않음
GET DATA PAGE BIGINT 질의 수행 시 디스크 페이지에 대한 버퍼 접근 횟수
CREATE DATA PAGE BIGINT 질의 수행 시 디스크 페이지 생성 횟수
READ UNDO PAGE BIGINT 질의 수행 시 UNDO 영역 디스크 페이지에 대한 읽기 연산 횟수
WRITE UNDO PAGE BIGINT 사용하지 않음
GET UNDO PAGE BIGINT 질의 수행 시 UNDO 영역 디스크 페이지에 대한 버퍼 접근 횟수
CREATE UNDO PAGE BIGINT 질의 수행 시 UNDO 영역 디스크 페이지 생성 횟수

[BIND]#

SQL 문에 바인드 되는 변수들에 대한 정보이다.

[PLAN]#

실행된 SQL 문의 실행 계획이 출력된다. 실행 계획에 관한 자세한 내용은 Performance Tuning Guide를 참고한다.

[SESSION STAT]#

매 3초마다 V$SESSTAT 정보가 출력된다. V$SESSTAT의 자세한 내용은 General Reference 의 성능 뷰 부분을 참고한다.

[SYSTEM STAT]#

매 3초마다 V$SYSSTAT 정보가 출력된다. V$SYSSTAT의 자세한 내용은 General Reference의 성능 뷰 부분을 참고한다.

[MEMORY STAT]#

매 3초마다 V$MEMSTAT 정보가 출력된다. V$MEMSTAT의 자세한 내용은 General Reference의 성능 뷰 부분을 참고한다.