2014년 7월 24일 목요일

[Hint]옵티마이저(Optimizer) 개요[오라클개발자교육/오라클/ORACLE강좌/오라클교육잘하는곳/오라클교육추천/ORACLE실무교육/ORACLE/ORACLE교육/ORACLE학원/오라클실무교육]

옵티마이저(Optimizer) 개요 

옵티마이저(Optimizer)를 SQL문장을 실행하는데 가정 적절한 데이터 추출 경로(실행경로)를 결정하는 판단기 또는 내부 아키텍처라고 할 수 있는데 동일한 외형의 SQL문장일지라도 결과는 같지만 옵티마이저의 목표(Goal)에 따라 처리하는 내부 실행 경로는 다를 수 있습니다. 

오라클은 CBO(Cost-Based Optimizer)와 RBO(Rule-Based Optimizer)를 지원하며 CBO의 경우 오라클7부터 도입된 권장되는 방법이며 RBO의 경우 간단한 몇 가지 규칙을 통해서만 실행계획을 수립하는 방법입니다. CBO의 경우 테이블이나 인덱스의 통계 정보를 바탕으로 가장 현실적이며 융통성을 가지는 실행 계획을 만들어 내며, 지속적으로 성능이 향상되고 있으므로 이 방법을 이용하는 것이 바람직하다고 할 수 있습니다. RBO의 경우 데이터 건수 등에 상관없이 오로지 정해진 규칙(Rule)에 의해서만 실행 계획을 생성하는 획일적인 방법을 이용하므로 최근에는 CBO를 사용하는 추세로 가고 있습니다. 

옵티마이저의 구성을 이해하기 위해 SQL문장이 어떻게 처리되는지 간단히 설명하면 다음과 같습니다. 

…… 

사용자가 SQL문장을 Oracle Server에 보내게 되면 파싱단계(문법, 권한등 확인)를 거치며 옵티마이저가 비용기반 또는 규칙기반으로 SQL문을 최적화 하며 이를 통해 실행된 결과가 사용자에게 돌려지는 것입니다. 

여기에서 파서는 SQL문의 문법이 맞는지등을 검사, DB객체(테이블, 인덱스등)와 참조되는 객체의 권한등을 검사하는데 이 단계가 끝나면 SQL문은 파싱트리(Parsed Tree)로 변형되어 옵티마이저에게 넘어갑니다. 

옵티마이저는 이전단계의 파싱 트리를 이용하여 결과를 만드는데 가장 효율적인 방법을 찾기 위해 CBO or RBO를 이용하게 됩니다. CBO, RBO에 대해서는 다음 강좌에 설명을 하도록 하겠습니다. 

다음에는 로우 소스 생성기 라는 것이 있어 옵티마이저에게 넘겨 받은 실행계획을 내부적으로 처리하기 위한 방법을 생성하는 단계인데, 실제 테이블에 Access 방법, Join 방법, Sort등을 위한 다양한 ROW SOURCE가 생성됩니다. 

로우 소스 생성기에서 만들어진 각각의 ROW SOURCE는 SQL 실행엔진에 위해 실행되게 되어 결과를 만들어 내게 되는 거죠… 

SQL 사용자는 옵티마이저의 Access 방법과 목표등을 설정 함으로서 옵티마이저가 실행 계획을 만들어 내는데 영향을 줄 수 있는데 특히 힌트를 이용하여 “이러한 경로로 데이터를 추출하세요” 라고 옵티마이저에게 알려줄 수 있습니다. 



오라클자바커뮤니티교육센터, 개발자전문교육, 개인80%환급 
www.oraclejavacommunity.com

평일주간(9:30~18:10) 개강
(7/28)[기업100%환급]C#4.0,WinForm,ADO.NET프로그래밍
(7/28)[기업100%환급]안드로이드개발자과정
(8/04)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지 
(8/04)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(8/08)[기업100%환급]SQL기초에서 Schema Object까지
(8/08)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(8/11)[채용예정교육]오라클자바개발잘하는신입뽑기프로젝트,교육전취업확정

평일야간(19:00~21:50) 개강
(7/29)안드로이드개발자과정
(7/29)Spring3.X, MyBatis, Hibernate실무과정
(8/04)웹퍼블리싱 마스터
(8/05)JSP,Ajax,jQUERY,Spring,MyBatis,Hibernate속성과정
(8/08)닷넷(C#,Network,ADO.NET,ASP.NET)마스터과정
(8/12)SQL기초에서실무까지
(8/28)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지

주말(10:00~17:50) 개강
(7/26)Spring3.X, MyBatis, Hibernate실무과정
(7/26)개발자를위한PLSQL,SQL튜닝,힌트
(8/02)C#,ASP.NET마스터
(8/02)웹퍼블리싱 마스터
(8/02)SQL초보에서 Schema Object까지
(8/09)안드로이드개발자과정
(8/09)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(8/23)JAVA,Network&WEB&Framework(자바기초에서웹스프링까지)

주말저녁(18:30~22:20) 개강
(8/02)JAVA,Network&WEB&Framework



댓글 없음:

댓글 쓰기