| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
Tags
- skt membership
- 반응형 웹
- c++
- CSS
- React.memo
- 프론트엔드
- 강화학습
- box-sizing
- 소수
- spring
- 수학
- Codility
- Javascript
- react
- SK바이오사이언스
- grid
- 미디어 쿼리
- 알고리즘
- useCallback
- Reverse Proxy
- Nginx
- pandas
- 포토샵
- c
- useMemo
- 백준
- JSX
- 통신사할인
- React 성능 최적화
- Photoshop
Archives
- Today
- Total
sliver__
SQL 처리 과정과 I/O 본문
728x90
SQL(Structured Query Language)
- 선언적 질의 언어
Optimizer
- 작성한 SQL을 프로시저를 만들어서 수행한다.
- DBMS의 내부 엔진
- DBMS 내부에서 프로시저를 작성하고 컴파일해서 실행 가능한 상태로 만드는 전 과정을 SQL 최적화라고 한다.
바인드 변수의 중요성
- SQL 옵티마이저와 로우 소스 생성기는 들어오는 SQL을 프로시저로 변환해 라이브러리 캐시에 저장한다.
- 라이브러리 캐시에 동일한 프로시저가 있으면 하드 파싱을 거치지 않고 소프트 파싱만 거쳐 재 사용된다.
- 바인드 변수를 파라미터화해서 SQL문을 사용하면 파라미터에 어떤 값이 들어오든 재 사용되는 프로서저가 된다.
- 하지만 바인드 변수를 사용하지 않고 직접 변수를 넣으면 변수까지 SQL로 보아 서비스를 사용하는 유저별로 다른 SQL이 수행되어 재 사용될 수 없다.
- e.g.) select * from customer where login_id = '" + login_id + "'";
- 프로시저는 다음과 같이 생성된다.
- create procedure LOGIN_TOMMY() {...} // 로그인 아이디가 tommy
- create procedure LOGIN_EUNSU(){...} // 로그인 아이디가 eunsu.
- e.g.) select * from customer where login_id = ?
- create procedure LOGIN(login_id in varchar2) // login_id가 파라미터이고 해당 프로시저를 공유해서 재 사용한다.
728x90
Comments