본문 바로가기

IT관련

멀티테넌트 DB(CDB) 내의 PDB 들간의 시스템 자원(CPU, Memory, Disk IO) 경합

Oracle Multi-Tenant DB 에서는 CDB(Container DB) 안에 여러 PDB(Pluggable DB) 들이 시스템 자원(CPU, Memory, Disk I/O 등)을 공유하고 있습니다.

 

 

만약 특정 PDB가 지나치게 자원을 많이 사용함으로써 다른 PDB 들에게 영향을 주는 경우에 대한 대책이 있어야 합니다.

미꾸라지 한마리가 물을 흐리는 형국이 PDB들간에서도 발생할 수 있기 때문이죠.

 

오라클DB에서는 이런식으로 한집안에 있는 DB 인스턴스들끼리의 자원경합을 방지하기 위해 다음과 같이 2가지 기능을 제공합니다.

 

       1) Resource Manager 를 통한 자원 배분

       2) PDB 레벨에서 지정가능한 Init Parameter 

 

Resource Manager 는 Multi-Tenant 기능 이전부터 있었던 오래된 기능입니다. PDB들뿐만아니라 한서버내에 들어있는 일반 DB 인스턴스들간의 자원사용량을 통제할 수 있습니다.

 

DB 초기화 파라메타(Init Parameter)는 DB의 자원사용량을 통제합니다. CPU, Memory, 병렬프로세스 갯수 등을 지정하여 특정 DB가 너무 많은 자원을 사용하지 않도록 지정할 수 있습니다.

 

일반적으로 Multi-Tenant 구조에서는 PDB들이 전체 시스템자원을 공유하는 구조이기 때문에 Init Parameter 를 CDB 레벨에서 관리합니다.

하지만, 일부 DB 파라메타들은 PDB 레벨에서 지정함으로써 특정 PDB 의 자원사용을 제한하는 것이 가능합니다.

 

이 PDB 레벨에서 별도로 지정가능한 Init Parameter 들은 DB 버전별로 약간씩 다릅니다. 버전이 올라갈수록 지정가능한 파라메타수가 점점 늘어납니다. 궁극적으로 거의 모든 파라메타들을 별도로 지정할 수 있도록 진화할 것으로 예상됩니다.