Database Caching Mode

 

Database Caching Mode?

Oracle Database 12c Release 1(12.1.0.2)부터는 이전 버전의 Oracle Database에서 사용된 Default Database Caching Mode와  새로 추가된 Force Full Database Caching Mode라는 두 가지 Database Caching Mode를 사용할 수 있습니다. Default Database Caching Mode에서 Oracle Database는 사용자가 큰 테이블을 쿼리로 엑세스 하여도 기본 데이터들을 항상 캐시하지는 않습니다. 하지만 Force Full Database Caching Mode에서 Oracle Database는 (버퍼 캐시가 전체 데이터베이스를 캐시하기에 충분히 크다고 가정하고) 쿼리로 액세스 한 모든 블록을 캐시하려고 합니다.

 

Default Database Caching Mode

기본적으로 Oracle Database는 Full Table Scan을 수행 할 때 Default Database Caching Mode를 사용합니다. Default Database Caching Mode에서 Oracle Database는 사용자가 큰 테이블을 쿼리 할 때 기본 데이터를 항상 캐시하지는 않습니다. 만약에 캐싱을 한다면 버퍼 캐시에서 더 자주쓰는 데이터가 제거 될 수도 있습니다. Oracle Database 인스턴스가 전체 데이터베이스를 버퍼 캐시에 캐시하기에 충분한 공간이 있고 그렇게하는 것이 유리하다고 판단하면 인스턴스는 자동으로 전체 데이터베이스를 버퍼 캐시에 캐시합니다. Oracle Database 인스턴스가 전체 데이터베이스를 버퍼 캐시에 캐시 할 공간이 충분하지 않다고 판단되면 아래와 같은 사항을 체크해야합니다.

  • Small Table은 테이블 크기가 버퍼 캐시 크기의 2 % 미만인 경우에만 메모리에 로드됩니다.
  • 중간 크기의 테이블의 경우 Oracle Database는 마지막 테이블 스캔과 버퍼 캐시의 에이징 타임 스탬프 사이의 간격을 분석합니다. 마지막 테이블 스캔에서 재사용 된 테이블의 크기가 나머지 버퍼 캐시 크기보다 큰 경우 테이블이 캐시됩니다.
  • KEEP 버퍼 풀에 대한 테이블을 명시적으로 선언하지 않는 한 큰 테이블은 일반적으로 메모리에 로드되지 않습니다.

Default Database Caching Mode에서 Oracle Database 인스턴스는 버퍼 캐시에 NOCACHE LOB를 캐시하지 않습니다.

 

Force Full Database Caching Mode

더 많은 메모리가 데이터베이스에 추가됨에 따라 버퍼 캐시 크기도 메모리가 허용하는 만큼 커질 수 있습니다. 경우에 따라 버퍼 캐시의 크기가 엄청나게 커져서 데이터베이스 전체가 메모리에 들어갈 수도 있습니다. 데이터베이스 전체를 메모리에 캐시하게 되면 Table Full Scan을 수행하거나 LOB에 액세스 할 때 데이터베이스 성능을 크게 향상시킬 수 있습니다.

Force Full Database Caching Mode에서 Oracle Database는 데이터베이스 크기가 데이터베이스 버퍼 캐시 크기보다 작은 경우 데이터베이스 전체 를 메모리에 캐시합니다. SecureFile을 사용하는 NOCACHE LOB 및 LOBS를 포함한 모든 데이터 파일이 액세스 될 때 버퍼 캐시에 로드됩니다.

 

Force Full Database Caching Mode를 사용해야하는 경우

데이터베이스 버퍼 캐시의 크기가 데이터베이스 크기보다 클 때, I/O 처리량 또는 응답 시간이 제한되는, 특히 테이블 스캔 및 LOB 데이터 액세스가 많은 워크로드의 데이터베이스에서 성능을 향상 시키기 위해 Force Full Database Caching Mode의 사용을 고려해 볼수 있습니다.

  • 논리적 데이터베이스 크기(또는 실제 사용 된 공간)가 Oracle RAC 환경에서 각 인스턴스의 개별 버퍼 캐시보다 작은 경우. Single 인스턴스일때도 적용되는 사항입니다.
  • 논리적 데이터베이스 크기가 Oracle RAC 환경에서 분할 된 워크로드(인스턴스 별)에 대한 모든 인스턴스의 합산한 버퍼 캐시 크기의 80 %보다 작습니다.
  • 데이터베이스가 SGA_TARGET 또는 MEMORY_TARGET을 사용하는 경우
  • NOCACHE LOB를 캐시해야 하는 경우, NOCACHE LOB은 Force Full Database Caching Mode를 사용하지 않으면 캐시되지 않습니다.

Oracle RAC 데이터베이스의 한쪽 노드의 인스턴스가 Force Full Database Caching Mode를 사용하는 경우 Oracle RAC 환경의 다른 모든 데이터베이스 인스턴스도 Force Full Database Caching Mode를 사용합니다.

다중 테넌트 환경에서 Force Full Database Caching Mode는 CDB 밑에 포함된 모든 PDB에도 적용됩니다.

 

Database Caching Mode의 확인 및 적용

Oracle은 기본적으로 Default Database Caching Mode로 세팅되어 있습니다.

확인

SELECT FORCE_FULL_DB_CACHING FROM V$DATABASE;

Force Full Database Caching Mode 적용

ALTER DATABASE FORCE FULL DATABASE CACHING;

 

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다