이것저것

친절한 SQL 튜닝 - 1.2 SQL 공유 및 재사용 본문

친절한 SQL 튜닝

친절한 SQL 튜닝 - 1.2 SQL 공유 및 재사용

nays111 2021. 1. 15. 23:07


소프트파싱 vs 하드파싱

소프트파싱 : SQL을 캐시에서 찾아 곧바로 실행단계로 넘어가는 것

하드파싱 : 캐시에서 찾는데 실패해 최적화 및 로우 소스 생성 단계까지 모두 거치는 것

(캐시에서 찾으면 곧바로 실행 단계로 넘어갈 수 있음)

Library Cache : SQL 파싱, 최적화, 로우 소스 생성 과정을 거쳐 생성한 내부 프로시저를 반복 재사용할 수 있도록 캐싱해 두는 메모리 공간

 


바인드 변수

라이브러리 캐시에서 SQL을 찾기 위해 사용하는 키 값은 'SQL문 그 자체'

select * from emp where empno=7000; 
SELECT * FROM EMP WHERE EMPNO=7000;

=> 모두 다른 SQ

의미적으로는 같지만, 실행할 때 각각 최적화를 진행하고, 라이브러리 캐시에서 별도 공간 사용

바인드 변수를 사용 안하는 상태에서 쿼리가 무수히 발생할 경우, 라이브러리 캐시에 경합 발생 (CPU 사용률 증가) => 동시다발적으로 SQL 하드파싱

바인드 변수를 사용할 경우 하드파싱은 최초 한번만 일어나고, 캐싱된 SQL을 공유 가능하다.

Comments