달력

12

« 2024/12 »

  • 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
  • 31
2011. 9. 5. 17:44

OWI - shared pool DataBase이야기2011. 9. 5. 17:44

http://www.oracleclub.com/lecture/1888

share pool 모든 자료구조들의 집합체
redo buffer 데이터의 일관성을 위해 존재하는 메모리 구조
buffer cache 데이터블록들이 메모리에 올라와 있는 공간

shared pool은 중요한 2가지가 있다.
library cache
dictionary cache 

library cache는 프로시저, 함수, 트리거, SQL문을 오브젝트로 관리하는 공간이다.
dictionary cache는  사용자들에 대한 정보와, 데이터베이스, 테이블의 구조등이 정의되어 있다.

shared pool은 힙으로 이루어져 있으며, 힙을 덤프하면 힙의 메모리구조를 알 수 있다.

내생각
shared pool은 Top heap이라는 구조가 있고, 이는 chunk들의 집합을 가르킨다.
top heap은 extent#0번째를 가르킨다.
extent는 subHeap이라고 생각한다. chunk들의 서브집합이 extent가 되고
extent의 집합의 시작지점을 TopHeap이 가르킨다.

chunk[][] topHeap = new chunk[m][n];
extent#0 = chunk[0];


또한 Heap구조에서 효율적으로 프리버퍼를 찾기 위해 LRU리스트를 관리한다.
이 리스트에는 재사용가능하거나, 프리블록들이 존재한다.

또한, 사용자가 요청한 메모리 크기에 맞게 메모리를 리턴해주기 위해서 Bucket구조로 관리한다.
버디 알고리즘과 유사하다고 생각하자.
FreeList는 bucket리스트를 가지고 있고, 첫번째 인덱스가 제일 작은 size에 대한 메모리구조를 관리하고, 인덱스가 뒤로 갈 수록 큰 메모리 공간을 관리하게 된다.

bucket[] FreeList = new bucket[m];
FreeList[0] // 제일 작은 메모리 크기 공간 관리
FreeList[m-1] //제일 큰 메모리 크기 공간 관리. 

'DataBase이야기' 카테고리의 다른 글

sqldeveloper 한글 꺠짐과 접속  (0) 2011.11.13
Wait Event  (0) 2011.09.02
plan_table 조회하기  (0) 2011.08.25
래치와 락  (0) 2011.08.24
Snapshot too old  (0) 2011.08.23
:
Posted by НooпeУ


Code Start Code End