일단 튜닝을 위해서는 데이터베이스의 구조에 대한 이해가 필요하다.
select문의 처리과정을 한번 파헤쳐보자
사용자가 데이터베이스에 접속을 요구하면 접속일자와 접속정보를 포함해서 사용자 프로세스가 활성화됨
접속한 뒤 select 문을 작성해서 실행하면 select 문장은 네트워크를 통해 서버 프로세스로 전송 됨
구문분석 단계에서 이 select 쿼리문이 한번이라도 사용됬는지 확인한다.
이유는 만약 사용이 됬다면 공유풀 영역을 뒤져서 확인한다. 만약 있다면 문장 분석을 하지않기 때문이다!
만약 한번도 쓴적이 없는 구문이라면 구문분석을 한다 이 select문에 오타가 없는지, 그리고 from 절에 테이블이
존재하는지, 그리고 구문분석단계에서 실행계획도 찾아줌(인덱스 테스트 할때 좋더라구요)
실행 단계에서는 구문분석이 정상적이라면 서버 프로세스는 메모리영역의 데이터베이스버퍼 캐시영역을 검색하여
해당 테이블이 다른 사용자의 다른 sql문에 의해 이미 데이터버퍼 캐시영역에 존재하는지 검색한다.
만약 존재하지 않는다면 정의된 테이블의 해당 데이터 파일로부터 테이블을 읽어서 데이터버퍼 캐쉬영역에 저장한다.
->select 외에 crud 문이라면 데이터 버퍼 캐쉬영역에서 새로운 데이터로 바뀌게 된다.
실행단계가 끝나면 서버프로세스는 데이터버퍼 캐쉬영역에서 관련 테이블 데이터를 읽어서 사용자의 클라이언트화면에
출력한다.(다른 select 외에 crud문은 출력단계를 거치지 않는다)
===============================================================
출처 및 더 자세한 정보 : http://www.dbguide.net/dbqna/oracle.db?cmd=view4
===============================================================
JSP , 스프링 , JQUERY , JQGRID , SMTP 를 이용한 전표 (0) | 2015.08.27 |
---|---|
오라클 기본키 , 복합키 수정 ... (0) | 2015.08.24 |
표기법을 한번 알아보자 (0) | 2015.08.21 |
jsp와 servlet 차이점을 다시한번 공부 (0) | 2015.08.18 |
분석유스케이스 실현 양식과 작성 방법 (0) | 2015.08.17 |