옵티마이져 모드 결정 Hint - Choose, all_rows, first_rows_n, rule

실행경로 결정 Hint  - Full, rowid, cluster, hash, index, index_asc, index_desc, index_join, index_ffs, no_index

sql문의 변형 Hint - Use_concat, rewrite, nowrite, merge, No_merge, start_transformation, no_expand

조인순서 변경 Hint - ordered, hint

조인방법 변경 Hint - use_nl, use_merge, use_hash, nl_aj, nl_sj

병렬처리 Hint - Parallel, no_parallel

기타 Hint - Cache, nocache, cursor_cache_sharing


user_table

block - 해당 데이터가 저장되어 있는 블록 수

num_rows - 데이터 행 수

avg_row_len - 하나의 행의 평균 길이

 

user_tab_columns

table_name - 테이블 명

column_name - 컬럼명

low_value - 해당 컬럼에 저장되어 있는 최소값

high_value - 해당 컬럼에 저장되어 있는 최대값

num_distinct - 유일한 값의 수

 

user_indexes

index_name - 인덱스명

blevel - 인덱스의 깊이(Depth)

leaf_blocks - 리프 블록의 수

bistinct_keys - 인덱스 컬럼의 유일한 값의 수

clustering_factor - 조건을 만족하는 데이터를 검색할 때 인덱스 키 값이 각 블록에 얼마나 잘 분산 저장되어 있는지를 나타내는 정도

num_rows - 행 수


1) sql문은 대문자 또는 소문자로 통일

2) 변수명은 sql문, 객체명, 컬럼명과 구분하기 위해 소문자로 작성

3) 다른 스키마의 테이블을 호출할 때는 Schema명.table명으로 작성

4) sql문의 각 단어 여백은 한 칸으로

5) sql문 내의 변수명은 변수 선언 기준안에 따르며 해당 컬럼명을 접두어와 경합하여 사용, where 비교 처리시에는 변수를 사용

6) sql문의 select, from, where 절은 라인의 선두에 사용


[공유-풀 영역의 구문분석 결과를 제공]

- 가장 많은 disk-i/o가 발생한 sql문을 제공

- 가장 많은 메모리를 사용한 sql문을 제공

- 가장 많은 cpu 사용시간이 소요된 sql문을 제공

- 사용자가 실행한 sql문의 패턴 제공

- sort 횟수, in·val·i·da·tion 된 sql문 등

 

version_count 컬럼

다른 유저가 같은 조건을 실행하였을 경우 count값이 올라간다.

 

load 컬럼

parsing을 할 때 library chche 영역에 로더 하게 될 경우 count값이 올라간다.

count값이 올라가지 않는 것이 성능에 유리 하다.

 

invalidation 컬럼

alter하거나 drop 할때 parsing정보에 대해 alter와 drop하기전에 library chche영역의 무결성을 보장 할 수 없기 때문에 count가 올라가게 된다.

invalidation된 sql문의 parsing결과들이 쌓이게 되고 공유 -  풀 메모리 공간 부족현산을 유발시킬뿐만 아니라 효율을 저하시키는 결정적인 원인이 된다.

처리방법으로는 데이터베이스를 재 시작하거나 alter system fulsh shared_pool; 명령어로 지속적인 관리가 요구됨

 

parse call 컬럼

동일한 조건을 실행하였을 경우 count값이 올라간다.


parse - sql문의 처리과정 중 구문분석 단계

execute - sql문의 처리과정중 실행 단계

fetch - sql문의 처리과정중 인출 단계

misses in library cach during parse : 0   - 이값이 0 이라면 이미 다른 사용자에의 실행된 적이 있었던 문장이기 때문에 파싱결과가 라이브러리 영역에 저장되어 있다. 0이라면 처음 실행되었다.

count - sql문이  처리될 때 분석, 실행, 인출을 몇 번씩 실행 했는지를 보여 줍니다.

cpu - sql문의 처리 단계별로 처리된 소요시간을 보여 줍니다.

elapsed - sql문의 처리 단계별로 처리된 소요시간을 보여 줍니다.

disk - 테이블이 저장되어 있는 데이터 파일로부터 데이터를 읽어오기 위해 읽은 블록 수를 의미합니다.

current - 메모리에 저장된 데이터를 가져오기 위해 읽은 버퍼 블록수를 의미합니다.

             (update, delete, insert문 사용후 select를 했을 때)

query - select문을 사용하여 데이터를 가져올 때 이미 다른 사용자가 같은 데이터를 사용하고 있다면 이 블록에서 데이터를 가져옵니다.


-- sql문장 중 분류작업이 발생하는 경우 --

 

- 인덱스를 생성하는 문법을 사용하는 경우(CREATE INDEX ~문)

- 인덱스가 있는 테이블에 병렬로 데이터를 입력하는 경우(INSERT INTO~PARALLEL(DEGREE n)

- ORDER BY, GROUP BY을 사용하는 경우(SELECT ~ ORDER BY ~ GROUP BY ~)

- DISTINCT 키워드를 사용하는 경우(SELECT DISTINCT ~)

- UNION, INTERSECT, MINUS 연결 연산자를 사용하는 경우(SELECT ~ UNION SELECT ~)

- 인덱스가 없는 2개의 테이블을 조인하는 경우(SELECT ~ FROM A, B WHERE ~)

- ANALYZE 명령문을 사용하는 경우(ANALYZE TABLE ~)


+ Recent posts