캐시 기준

실행 계획 캐시는 SQL 텍스트를 본다

값만 바뀌어도 문장 모양이 같으면 기존 계획을 재사용할 수 있습니다. 문장 자체가 바뀌면 새로 파싱하고 최적화해야 합니다.

비교 대상
소프트 파싱

바인드 변수 사용

값은 바뀌지만 SQL 형태는 고정됩니다.

하드 파싱

리터럴 직접 사용

값이 바뀔 때마다 다른 SQL 문장이 됩니다.

입력 SQL
SELECT * FROM orders
WHERE user_id = :uid;
SELECT * FROM orders
WHERE user_id = 1001;

SELECT * FROM orders
WHERE user_id = 1002;
캐시가 보는 것
항상 같은 SQL 캐시 키가 유지되므로 같은 실행 계획을 다시 찾을 수 있습니다.
매번 다른 SQL 1001, 1002처럼 값이 바뀌면 텍스트가 달라져 캐시 미스가 납니다.
파싱 동작
기존 계획 재사용 이미 만들어 둔 실행 계획을 꺼내 바로 실행합니다.
파싱 + 최적화 다시 수행 새 SQL로 간주되어 문법 분석과 실행 계획 생성이 반복됩니다.
운영 영향
CPU 절약, 응답 안정적 요청이 많을수록 캐시 재사용 효과가 커집니다.
CPU 사용 증가, 캐시 효율 저하 비슷한 쿼리라도 하드 파싱 비용이 계속 누적됩니다.
학습 포인트
바인드 변수의 핵심은 값을 숨기는 것이 아니라, SQL 모양을 고정해 실행 계획 캐시를 재사용하게 만드는 것입니다.