∞. 기술 면접/4. 데이터베이스

07. 기술면접 - 데이터베이스 - Statement와 PrepareStatement

THE HEYDAZE 2021. 10. 17. 22:52
공부목적으로 다른 블로그의 글을 그대로 따라치면서 작성되었습니다. 저작권 문제 시, 비공개 처리하겠습니다

 

Statement 와 PreparedStatement

SQL 을 실행할 수 있는 객체입니다

Statement

1. 단일로 사용될 때 빠른 속도를 지닙니다.

2. 쿼리에 인자를 부여할 수 없습니다.

3. 매번 컴파일을 수행해야 합니다.

 

PreparedStatement

1. 쿼리에 인자를 부여할 수 있습니다.

2. 처음 프리컴파일 된 후, 이후에는 컴파일을 수행하지 않습니다.

3. 여러번 수행될 때 빠른 속도를 지닙니다. (동일한 쿼리문을 조금씩 바꿔서 여러번 실행해야 할 때 좋다)

 

과정

1. 준비(Prepare) : 먼저 애플리케이션은 문의(Query) 틀을 만들고 이를 DBMS 로 보낸다. 특정값은 지정하지 않은 채로 남겨진다
INSERT INTO products(name, age) VALUES(?, ?);

2. 그 다음, DBMS 는 문의 틀을 컴파일하며(최적화 및 변환) 아직 실행하지 않고 결과만 저장한다

3. 실행(Execute): 나중에 애플리케이션이 문 틀의 변수에 값(바인드)을 지정하면 DBMS는 (결과를 반환할 수 도 있는)
                      문을 실행한다. 애플리케이션은 여러 값으로 원하는 횟수만큼 문을 실행할 수 있다. 위의 예에서
                      첫 번째 변수로 'bike', 두 번째 변수로 '20'을 지정한다

 

Statement 와 PreparedStatement 와 차이

매번 컴파일 하는 지 한 번만 컴파일하는 지를 차이라고 보는 데, 바로 캐시(cache) 사용 여부 라고 보면 된다

Statement 는 위의 3단계 과정을 매번 거치지만, PreparedStatement 는 1번만 거치고, 캐시로 저장하고 있어

재사용하여 성능에 좋다  (아래 참고)

 

속도 차이

https://mozi.tistory.com/29