앞서 내부 프로시저는 SQL파싱 -> 최적화 -> 로우소스 생성 의 과정을 거쳐 생성된다고 했다.
매번 SQL을 실행할 때마다 위와같은 동작을 하게되면 당연히 퍼포먼스적 측면에서 좋은점수를 받지 못한다.
때문에 내부 프로시저를 라이브러리 캐시에 캐싱해서 성능을 끌어올린다.
SELECT * FROM emp WHERE empno = 7900;
select * from emp where empno = 7900;
아래와 같은 자바코드도 사용자마다 loginId
가 다를 것이니 매번 하드파싱을 할 것이다.public void login(String loginId) {
String sql = "SELECT * FROM CUSTOMER WHERE LOGIN_ID = '" + loginId + "'";
// sql호출하는 코드
}
public void login(String loginId) {
String sql = "SELECT * FROM CUSTOMER WHERE LOGIN_ID = ?";
PreparedStatement st = connection.prepareStatement(sql);
st.setString(1, loginId);
//...
}
이 SQL에 대한 하드파싱은 최초 한번만 일어나고, 캐싱된 SQL을 사용자들이 공유하며 재사용한다.