SQLP

[SQLP]바인딩 변수

songsua 2024. 8. 14. 00:57

바인딩 변수 사용은 "파싱" 의 횟수를 감소시킨다. 이 때문에 성능을 개선시킬 수 있다

바인드변수 최소 실행 시에는 "하드 파싱"이다. 그 이후로는 "소프트 파싱"으로 들어간다.

 

바인딩 변수의 peeking 은 Hard parsing 시 한번의 바인드 변수의 peeking 을 하여 SQL 실행 계획이 고정되도록 하는 것

 

 

소프트 파싱이 일어나기 위한 SQL 명령문 조건 ★★★★★

- 실행 계획을 공유하지 못하는 경우

1. 공백 문자 또는 줄바꿈
select * from employees;

select * from  employess;

 

2. 대소문자의 구분

select * from CUstomers;

select * from customers;

 

3. 주석

select * from customers;

select /*주석*/* from customers;

 

4.table 오너 명시 

select * from customers;

select * from HR.customers;

 

5. 옵티마이저 힌트 사용

select * from customers;

select /*+all_rows*/*  from customers;

 

6. 조건절 비교값이 다른 경우

select * from customers where Login='tom';

select * from customers where Login='song';

 

바인딩 변수가 비추천되는 사용환경

- 배치 프로그램이나 DW,OLAP 등 시스템에서사용된 Long Running 쿼리

- 파싱 소용 시간이 쿼리 총 소요시간에서의 비중이 낮고, 수행 빈도도 낮아서 하드 파싱에 의한 라이브러리 캐시 부하 유발이 낮은 환경

- 바인드 변수 대신 상수 조건절을 사용하여 옵티마이저가 히스토그램을 사용하는 것이 유리한 환경

- 조건절 컬럼의 값 종루가 소수일 때

즉, 바인딩 변수는 사용자가 선택적으로 입력할 수 있는 조회 항목이 다양해서 조건절이 동적으로 바뀔때 사용이 추천된다.

'SQLP' 카테고리의 다른 글

[SQLP] 테이블 스페이스  (0) 2024.08.15
[SQLP] 커서 공유  (0) 2024.08.15
[SQLP] 조인 수행 원리2  (0) 2024.08.13
[SQLP] 조인 수행 원리  (0) 2024.08.12
[SQLP] 인덱스 성능 저하 요인3 ★★★★★  (0) 2024.08.10