본문
01 아키텍처
- 오라클은 데이터베이스(데이터를 저장하는 파일 집합)와 이를 액세스하는 프로세스 사이에 SGA라고 하는
메모리 캐시 영역을 두고 있다.
- 많은 프로세스가 동시에 데이터를 액세스 하기 때문에 데이터를 보호하는 Lock과 Latch가 필요함
- 오라클은 블록 단위로 읽고, 저장할 때도 변경이 발생한 블록만 찾아 블록 단위로 저장한다.
- 오라클도 백그라운드에서 DBWR과 CKPT 프로세스가 캐시와 데이터파일 간 동기화를 주기적으로 수행해 줌
(=워드 프로세서의 자동 저장 기능)
- 데이터베이스 : 디스크에 저장된 데이터 집합(Data File, Control File, Redo Log File 등)
- 인스턴스 : SGA 공유 메모리 영역과 이를 액세스하는 프로세스의 집합
- 프로세스 집합은 다시 서버 프로세스와 백그라운드 프로세스로 나뉜다.
- 서버 프로세스는 전면에서 사용자가 던지는 명령을 처리한다.
* SQL 파싱, 최적화 수행, 블록 읽기, 읽은 데이터를 정렬해 클라이언트가 요청한 결과집합을 만들어 네트워크를 통해
전송하는 일련의 작업들
* 스스로 처리하지 못하는 일들을 만나면 OS, I/O 서브시스템, 백그라운드 프로세스 등에 신호를 보내 처리하도록 요청한다.
(└ 데이터 파일로 부터 DB 버퍼 캐시로 블록을 적재하거나 Free 블록을 확보하는 일, Redo 로그 버퍼를 비우는 일등)
- 백그라운드 프로세스는 뒤에서 주어진 역할을 수행한다.
▶ 오라클 접속 과정
1. 연결 요청
2. 프로세스 생성, 연결요청 상속
3. 메모리 생성 (PGA)
4. RESEND 패킷 전송
5. 연결
- PGA : 서버 프로세스만을 위한 독립적인 메모리 공간
- 리스터에 연결요청을 하는 순간 하나의 프로세스를 띄우고(fork) PGA에 메모리를 할당
- 오라클에 접속하는 애플리케이션을 구축할 때 반드시 커넥션 풀(Connection Pool) 기능이 필요하다.
(매번 연결 요청을 한다면 성능 ↓)
- 한번 커넥션을 맺으면 작업을 완료하더라도 이르 해제하지 않고 애플리케이션 서버에 Pooling 하고 있다가 반복 재사용한다.
- 기본적인 구성으로 오라클을 설치하면 하나의 데이터베이스에 접근하는 하나의 인스턴스가 생성되지만
RAC(Real Application Cluster) 환경에서는 하나의 데이터베이스를 액세스하는 다중 인스턴스로 구성된다.
- RAC는 공유 캐시(Shared Cache) 방식을 지원 (과거에는 데이터 파일만 공유하는 공유 디스크(Shared Disk) 방식)
- 글로벌 캐시 개념을 사용하므로 로컬 캐시에 없는 데이터 블록을 이웃 노드에서 전송받아 서비스 할 수 있다.
- 다른 인스턴스에서 갱신하고 아직 커밋하지 않은 Active 상태의 블록까지도 디스크를 경유하지 않고 Dirty 버퍼 상태에서
네트워크를 통해 서로 주고받으며 갱신을 수행.
- RAC 이전 OPS 환경에서는 타 노드에서 캐싱된 Dirty 버퍼를 읽고자 할 때 디스크로의 쓰기 작업이 선행되어야만 했고,
이처럼 디스크를 거치는 동기화 과정을 핑(Ping)이라고 불렀다.
- 여러개의 인스턴스가 하나의 데이터베이스를 액세스하는 것은 가능하지만, 하나의 인스턴스가 여러 개의 데이터베이스를
액세스하는 것은 불가능하다.
- DB Link는 일반 클라이언트 세션과 동일하게 Oracle Net을 이용해 SQL 기반으로 데이터를 읽고 쓰는 구조이므로
아키텍처와는 별개로 이해해야 한다.
- SQL 튜닝할 때 가장 많이 사용하는 툴킷(Toolkit) : SQL 트레이스
- 표 : SQL 트레이스를 통해 수집된 SQL 수행정보를 TKProf 유틸리티를 이용해 포맷했을 때 볼 수 있는 Call 통계
- query(6번째 컬럼)와 current(7번째 컬럼) 항목의 의미와 차이점은 정확히 알 수 없다.
- current에 대해서는 update할 때 주로 나타난다···
조시형,『오라클 성능 고도화 원리와 해법Ⅰ』, (주)비투엔컨설팅, 2009, pp.15-23
'Oracle > Oracle_성능고도화' 카테고리의 다른 글
[Chapter 01] 오라클 아키텍처 - 03 버퍼 Lock (0) | 2014.09.22 |
---|---|
[Chapter 01] 오라클 아키텍처 - 02 DB 버퍼 캐시 (0) | 2014.09.22 |