728x90

01 | 오라클 아키텍처

01 ) 기본 아키텍처

오라클 성능 고도화 그림 1-3

오라클은 데이터베이스와 이를 액세스하는 프로세스 사이에 SGA(System Global Area)라고 하는 메모리 캐시 영역을 두고 있다.

인스턴스 : 메모리 + 프로세스

데이터베이스 : 데이터파일 + redo log file + control file

 

디스크를 경유하는 I/O는 물리적으로 액세스 암(Arm)이 움직이면서 헤드를 통해 데이터를 읽고 쓴다.

메모리를 통한 I/O는 전기적 신호를 통해 이루어지기 때문에 디스크를 경유하는 경우와 비교할 수 없을 정도로 속도가 빠르다. 

디스크 I/O 속도 < 메모리 I/O 속도 (캐시)

기억장치 - 액세스 암

데이터베이스는 많은 사용자들이 동시에 데이터에 액세스하기 때문에 데이터를 보호하기 위해 Lock은 물론 SGA상에 위치한 데이터 구조에 대한 액세스를 직렬화하기 위한 Lock 매커니즘(=래치, Latch)도 필요하다.

 

트랜잭션의 직렬성 : 여러 트랜잭션이 동시에 병행 수행되더라도 각 트랜잭션이 하나씩 차례대로 수행되는 것과 같은 일관성을 보장하는 수행특성

 

인스턴스를 구성하는 프로세스에는 서버 프로세스와 백그라운드 프로세스가 존재한다.

서버 프로세스 : 사용자가 던진 명령을 처리

백그라운드 프로세스 : 서버 프로세스가 스스로 처리하지 못하는 작업 (버퍼 캐시로 블록 적재 등)을 처리

 

오라클에 접속하면 각 클라이언트를 위한 전용 서버 프로세스가 뜨고, 사용자에게 필요한 서비스를 제공한다. SQL을 파싱하고 필요하면 최적화를 수행하며, 커서를 열어 SQL을 실행하면서 블록을 정렬해서 클라이언트가 요청한 결과집합을 만들어 네트워크를 통해 전송하는 일련의 작업들을 모두 서버 프로세스가 처리해 준다. 

 

 오라클에서 세션이 수립되는 과정은 다음과 같다.

1. 사용자가 오라클 접속 연결 요청

2. 사용자로부터 연결 요청을 받은 리스너가 서버 프로세스를 생성 

3. 서버 프로세스는 PGA를 할당 받음

4. 서버 프로세스 생성 완료에 대한 패킷을 사용자에게 전송

5. 사용자 해당 서버 프로세스로 연결하여 DB접속

 

▶ 리스너에 연결요청을 하는 순산 하나의 프로세스를 띄우고 (fork) PGA메모리를 할당한다. 

프로세스 하나를 띄우고 PGA를 할당하는 과정은 cost가매우 큰 작업으로 SQL문을 실행할 때마다 연결요청을 받아 프로세스를 할당받아 실행하는 것은 성능적은 측면에서 좋지 않다. 그래서 반드시 Connection Pool 기능이 필요하다.

 

Connection Pool ▶ 한번 커넥션을 맺으면 작업을 완료하더라도 이를 해제하지 않고 애플리케이션 서버에 Pooling 하고 있다가 세션을 반복 재사용을 한다. 

 

'Database > Oracle' 카테고리의 다른 글

[Oracle] 오라클 성능 고도화 (3)  (0) 2026.03.18
[Oralce] 오라클 성능 최적화 (2)  (0) 2026.03.18

+ Recent posts