2014년 4월 17일 목요일

오라클 라이브러리 캐시(oracle library cache)[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]

오라클 라이브러리 캐시(oracle library cache)[닷넷C#교육/ADO.NET강좌/ASP.NET교육잘하는곳/C#,ASP.NET교육추천/닷넷실무교육/.NET,C#/ADO.NET교육/닷넷학원/ASP.NET실무교육]
라이브러리 캐시는 사용자가 요청한 질의 문장을 Server Process가 여러 단계를 거쳐 작업할 때 사용하는 작업 공간으로서 공유 SQL 영역과 개별 SQL 영역, PL/SQL 영역으로 나누어 볼 수 있다.  

공유 SQL 영역에는 SQL문에 대한 텍스트, 파스 트리, 실행 계획 등을 저장 하고 있으며 Shared PL/SQL영역은 최근에 실행한 PL/SQL 문장과 파싱 되고 컴파일된 프로그램 Unit, Procedure등을 저장한다. 개별 SQL 영역은 MTS(Multiple Transaction Server)에서 사용 한다.

Library Cache
의 가장 중요한 목적은 Library Cache안에 저장된 Object를 가장 빠르게 찾고 저장하는 기법을 제공하는 것으로 오라클의 모든 동적 메모리를 관리하는 Heap Manager library cache Manager에 의해 관리 된다.
이러한 목적을 위해 Library Cache Manager Hashing 기법을 이용하여 Object에 대한 이름을 갖는 핸들을 찾고 이 핸들을 통해 Object를 찾는다.  Hash Table Hash Bucket으로 구성 되어 있으며 이 Burcket들은 여러 개의 library cache Handle List를 가지고 있다.

Library Cache Handle
은 결국 Library Cache Object를 가리키고 있으며 library cache Object의 이름, namespace, timespace, reference list, object locking하고 있는 lock list, pinning하고 있는 pin list를 포함하고 있습니다.

library cache
에는 아래와 같은 Library Objects들이 있습니다.

SQL AREA(SQL CURSOR)
TABLE/PROCEDURE(VIEW, SYNONYM, SEQUENCE
등 포함)
BODY
TRIGGER
INDEX
CLUSTER
OBJECT(PL/SQL Anonymous BLOCK)
PIPE

이번에는 library cache Manager Object를 찾는 절차에 대해 보도록 하겠습니다.

1.
        주어진 Object Namespace, Object Name, Owner, DataBase Link값을 hash function을 적용하여 Object가 존재하는 hash bucket을 찾습니다.
2.
        hash bucket을 찾은 다음 linked list를 따라 Object가 존재하는 지를 check 합니다.
3.
        만약 Object가 존재 한다면 9로 가고 아니면 library cache Manager는 주어진 이름으로 Empty Object를 생성 합니다.
4.
        3에서 생성된 Empty Object Hash Table에 포함 시킵니다.
5.
        Client에게 Object를 로드 하도록 요청 합니다.
6.
        Client가 디스크에서 읽어 Object를 찾습니다.
7.
        Heap Manager에게 Memory를 할당 하도록 요청 합니다.
8.
        Object를 로드 합니다.
9.
        찾은 Object를 사용 합니다.

오라클의 모든 SQL은 공유 SQL 영역과 개별(전용) SQL 영역에서 수행되는데 만약 두 명의 사용자가 같은 SQL문을 사용 할 경우 공유 SQL 영역을 재사용 하여 자원을 절약하고 사용자의 개별 SQL 영역에 복사본을 보유한다.
라이브러리 캐시에는 SQL 문장을 하나씩 실행 할 때 마다 사용된 SQL 문장이 저장되며 User가 이전과 동일한 SQL 문장을 실행하면 Parse Time이 줄어들어 성능이 향상된다.

동일한 문장이란 .소문자.공백을 포함하여 문자열이 동일 해야 하며 참조된 Object가 동일 해야 하며 또한 변수 유형과 이름, 사용자가 동일 해야한다. 결국 100% 같은 문장만이 동일한 문장으로 인식 한 다는것 꼭 기억 하시기 바란다.


1.
공유 SQL 영역 :  주어진 SQL 문장에 대해 Parse Tree와 실행 계획을 가지고 있습니다. 오라클은 여러번 걸쳐 사용되는 SQL문장을 하나의 공유 SQL 영역에 저장하여 관리 합니다. 만약 전체 공유 풀이 모두 사용되어 꽉 차게 되면 LRU 알고리즘에 따라 메모리 사용 빈도가 낮은 SQL을 제거 하게 됩니다.

2.PL/SQL
프러시저와 패키지 : SQL을 처리하는 것과 같이 PL/SQL 프로그램 Unit(Function, Procedure, Package, Anonymous Block)을 처리하고  SQL과 마찬가지로 구문 분석 후 컴파일 된 형태로 공유 SQL 영역에 저장된다. 오라클은 프로그램 단위로 실행되는 세션에 할당된 값을 저장하기 위해 개별 SQL 영역에 메모리를 할당하는데 여기에는 지역변수, 전역변수, 패키지변수, 실행된 SQL에 대한 버퍼가 포함되며 이렇게 하여 개별 사용자는 자신의 개별 SQL 영역에 분리된 복사본을 가지게 된다. PL/SQL 프로그램의 구문분석 정보와 실행 계획은 공유 SQL 영역에서 사용 되며 SQL의 실행은 각 세션에 대한 개별 영역에 저장 된다.
오라클자바커뮤니티에서 운영, 개발자 전문교육, 개인80%환급 오엔제이프로그래밍실무교육센터(www.onjprogramming.co.kr)

평일주간(9:30~18:20) 개강
(4/22)[기업100%환급]PL/SQL,ORACLE HINT,TUNING
(4/29)[기업100%환급]자바기초에서 JDBC, Servlet/JSP까지
(4/29)C#4.0,ADO.NET,Network 프로그래밍
(5/12)[기업100%환급]Spring ,MyBatis,Hibernate실무과정
(5/12)[기업100%환급]SQL기초에서 Schema Object까지

평일야간(19:00~21:50) 개강
(4/22)웹퍼블리싱 마스터
(4/23)안드로이드개발자과정
(4/24)Spring3.X, MyBatis, Hibernate실무과정
(5/16)자바웹(JSP,Spring,MyBatis,XPlatform)프로젝트과정
(5/16)JAVA&WEB프레임워크실무과정
(5/16)C#,ASP.NET마스터
(5/16)SQL초보에서실전전문가까지

주말(10:00~18:00) 개강
(4/20)웹퍼블리싱 마스터
(5/03)Spring3.X, MyBatis, Hibernate실무과정
(5/03)안드로이드개발자과정
(5/17)자바기초에서JSP,Ajax,jQuery,Spring3.2,MyBatis까지
(5/17)JAVA,JDBC,JSP,Servlet,Ajax,jQUERY,Spring,MyBatis,Hibernate
(5/17)SQL초보에서실전전문가까지
(5/17)개발자를위한PLSQL,SQL튜닝,힌트
(5/17)C#,ASP.NET마스터

주말저녁(18:30~22:20) 개강
(5/17)JAVA,JDBC,JSP,Servlet,Ajax,jQUERY,Spring,MyBatis,Hibernate
(5/17)SQL기초에서 Schema Object까지



댓글 없음:

댓글 쓰기