티스토리 뷰

ORACLE/RAC

Oracle RAC의 Cache Fusion 캐시퓨전(1)

공부하는알파카 2020. 8. 2. 17:04

Oracle RAC의 DB Buffer Cache

오늘은 오라클 RAC 특징에 있어서 가장 중요한 cache fusion에 대해서 알아보겠다. 그러면 그 전에 DB Buffer cache에 대해서 알아야 한다.

Node

하나의 DB에 연결된 서버를 의미한다. 2 Node RAC는 2대의 물리적인 서버가 하나의 DB에 연결된 경우이다.

 

Instance

각각의 Node는 각각의 Instance를 가진다. 하나의 Instance는 여러 Node에 중복 존재할 수 없지만 하나의 Node는 여러개의 Instance로 구성할 수 있다.

 

SGA

하나의 Instance는 반드시 하나의 SGA를 가지며 SGA는 Shared Pool, DB Buffer Cache, Redo Log Buffer 등으로 구성된다.

 

Cache Fusion과 DB Buffer Cache

DB Buffer Cache는 유저가 요청한 SQL문을 수행하기 위해서 필요한 Data Block을 Disk로부터 메모리로 올리는(Caching) 하는 영역이다. Cache Fusion에서 DB Buffer Cache가 중요한 이유는 Cache Fusion이 서로 다른 Instance의 DB Buffer Cache에서 Block을 이동시키는 부분에서 발생하기 때문이다.

 

 

 

 

 

 

Cache Fusion

Cache Fusion은 OPS(Oracle Parallel Server)의 Block Transformation의 문제를 극복하기 위해 나타난 아키텍쳐이며 이를 통해 Oracle RAC는 성능적으로 안정성을 갖추게 되었다.

 

*Block Transformation

특정 Instance에 존재하는 Block을 다른 Instance에서 액세스하기 위해서 해당 블럭을 공유 Storage에 write한 후, 그 Block을 호출한 Instance의 DB Buffer Cache로 캐싱하여 Data Block을 다른 Node로 이동시키는 방식이다.

 

하지만 각각의 Instance에서 많은 작업이 수행되고, 각각의 Instance 사이에서 이동하는 Block이 많으면 성능 저하가 발생한다. 이 이유로 OPS는 사라지게 되었다.

 

 

Cache Fusion은 아래와 같은 방식으로 수행된다.

① Instance 2에 접속한 A 프로세스는 Instance 1에 존재하는 1번 Block을 액세스하기 위해 호출한다.

② Instance 1에 존재하는 1번 Block은 Instance 2의 호출에 응답하기 위해 Instance 2의 SGA의 DB Buffer Cache로 이동해야 한다. 이동을 위해 공유 Storage에 존재하는 DB를 이용하지 않고 Instance 사이의 Interconnect를 이용한다.

③ Interconnect를 이용하여 Instance 2로 캐싱된 1번 Block을 A 프로세스가 액세스할 수 있게 된다.

 

 

 

 

Cache Fusion의 목적

Block이 특정 Node의 DB Buffer Cache에 로드되어 있다면 Disk I/O가 발생하지 않기 때문에 Block 이동을 빠르게 처리할 수 있어서 Oracle RAC의 성능 향상에 가장 중요한 아키텍쳐이다.

 

 

 

Cache Fusion의 구성 요소

GRD(Global Resource Directory)

   RAC에서 Global Resource를 관리한다. Cluster의 동기화를 위해서 Cluster 내의 Resource 정보들(Resource Master,       Resource Holder)을 저장한다.

 

*Resource Master : 특정 Resource의 Master를 지칭한다. 특정 Global Resource는 반드시 하나의 GRD에서 최신 정보를 관리한다.

*Resource Holder : 특정 Resource의 최종 버전을 가지고 있는 Node를 의미한다.

 

 

GCS(Global Cache Service)

   Data의 일관성 및 무결성을 유지하는 서비스로, DB Buffer Cache 동기화에 대한 Global 정보를 저장한다. 즉, Block에     대한 Lock 정보를 관리한다.

 

GES(Global Enqueue Service)

   DB Lock에 대한 정보를 관리하는 서비스로 Block 이외의 Lock 정보를 저장한다. 즉, Enqueue Lock, Library Cache         Lock, Row Cache Lock 등의 정보를 관리한다.

 

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
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
글 보관함