바인딩 변수 사용은 "파싱" 의 횟수를 감소시킨다. 이 때문에 성능을 개선시킬 수 있다
바인드변수 최소 실행 시에는 "하드 파싱"이다. 그 이후로는 "소프트 파싱"으로 들어간다.
바인딩 변수의 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 |