오라클은 데이터베이스와 이를 액세스하는 프로세스 사이에 SGA(System Gloval Area 또는 Shared Global Area)라고 하는 메모리 캐시 영역을 두고 있다.
※ SGA는 서버 프로세스와 백그라운드 프로세스가 공통으로 액세스하는 데이터와 제어 구조를 담는다.
디스크를 경유한 입출력 : 물리적으로 액세스 암이 움직이면서 헤드를 통해 데이터를 읽고 씀
메모리 캐시를 통한 입출력 : 전기적 신호에 불과하기 때문에 디스크 I/O에 비교할 수 없이 빠름
많은 프로세스가 동시에 데이터를 액세스 → 사용자 데이터를 보호하는 Lock은 물론 공유 메모리 영역인 SGA상에 위치한 데이터 구조에 대한 액세스를 직렬화 하기 위한 LOCK 메커니즘(Latch, 래치)도 필요
오라클은 블록 단위로 읽고, 저장할 때도 변경이 발생한 블록만 찾아 블록 단위로 저장
오라클은 백그라운드에서DBWR와 CKPT 프로세스가 캐시와 데이터파일 간 동기화를 주기적으로 수행
오라클에서의 데이터베이스 : 디스크에 저장된 데이터 집합(Datafile, Redo Log File, Control File 등)
인스턴스 : SGA 공유 메모리 영역과 프로세스 집합
서버 프로세스 : 전면에서 사용자가 던지는 명령을 처리
백그라운드 프로세스 : 안보이지만 뒤에서 묵묵하게 주어진 역할 수행
리스너에 연결요청을 하는 순간 하나의 프로세스를 띄우고(fork) PGA(Process=Program=Private) 메모리를 할당
※ PGA는 서버 프로세스만을 위한 독립적인 메모리 공간이다.
오라클에 접속하는 애플리케이션을 구축할 때 반드시 커넥션 풀(Connection Pool) 기능이 필요한데, 한번 커넥션을 맺으면 작업을 완료하더라도 이를 해제하지 않고 애플리케이션 서버에 Pooling 하고 있다가 반복 재사용한다.(재사용성)
기본적인 오라클을 설치하면 하나의 DB에 접근하는 하나의 인스턴스가 생성되지만, RAC(Real Application Cluster) 환경에서는 하나의 데이터베이스를 액세스하는 다중 인스턴스로 구성됨
RAC 모델
- 공유 캐시(Shared Cache) 방식을 지원하며, 글로벌 캐시(Global Cache) 개념을 사용
- 다른 인스턴스에서 갱신하고 아직 커밋하지 않은 Active 상태의 블록까지도 디스크를 경유하지 않고 Dirty 버퍼(메모리와 디스크 간에 동기화되지 않은 버퍼) 상태에서 네트워크를 통해 서로 주고받으며 갱신을 수행
'IT 공부 > SQL' 카테고리의 다른 글
[SQLP] Redo (0) | 2024.01.15 |
---|---|
[SQLP] 버퍼 LOCK (0) | 2024.01.15 |
[SQLP] DB 버퍼 캐시 (2) | 2024.01.15 |
DBMS별 날짜 포맷 - Default 날짜/날짜 조회/날짜 변환 (0) | 2023.08.24 |
DB2 SQL 에러 코드 정리(SQLCODE) (0) | 2023.08.24 |
댓글