본문 바로가기

Computer Science/Database

그림으로 공부하는 오라클 구조 - Ch2. 오라클의 여러 프로세스

728x90

오라클 프로세스 구조

프로세스란?

- 실행 상태에 있는 프로그램. 실행 상태라서 메모리나 자원을 가지고 있다.

스레드 

- 프로세스 내에 존재하는 실행 단위. 하나의 프로세스 안에서 처리를 병렬로 하고 싶을 때 사용

 

일반적인 프로세스와 데이터베이스 프로세스의 차이

- 데이터베이스를 사용하지 않는 프로그래밍에서는 일반적으로 개개의 프로세스가 자신이 가진 변수(데이터)를 처리하는 것이 일반적이지만 데이터베이스의 프로세스는 여러 프로세스나 사용자가 하나의 데이터베이스(데이터 집합)에 접근한 다는 점이 큰 차이점이다. 즉, 여러 사용자나 프로그램이 데이터베이스의 데이터를 공유한다.

 

 

오라클이 여러 개의 프로세스로 구성된 이유

 위의 그림을 보면 RECO, PMON, SMON, DBW0, LGWR, ARC0 등 오라클 데이터베이스는 여러 개의 프로세스를 지니고 있다. 이와 같이 여러 종류의 프로세스가 있기도 하고, DBW0, DBW1 ... 와 같이 동일한 종류의 프로세스가 여러 개 있기도 하다. 

 동일 종류의 프로세스가 여러 개인 이유는? - 디스크 I/O 대기시간에 CPU를 쉬게 하는 낭비를 최소화하도록 다른 프로세스가 CPU를 사용하여 다른 일을 해서 CPU를 쉬게 하지 않도록 하기 위함일 것이다. DBWx, ARCx 모두 디스크에 데이터를 I/O하는 작업을 하는 프로세스이다.

 

서버 프로세스와 백그라운드 프로세스의 역할

 오라클은 서버 프로세스와 백그라운드 프로세스로 구성되어 있다.

- 서버 프로세스 : SQL문을 처리하는 프로세스

- 백그라운드 프로세스 : 서버 프로세스를 도와주는 프로세스, 위 그림에서 RECO, PMON, SMON, DBW0, LGWR, ARC0 들이 해당된다.

오라클 시스템 구조

 클라이언트(유저 프로세스)는 서버 프로세스와 통신한다. 이 때 클라이언트는 자바, C, SQL*Plus등 데이터베이스 입장에서의 사용자를 의미한다.

 

각 프로세스가 수행하는 처리

  1. SQL문의 수신 - 서버
  2. SQL문의 파싱 - 서버
  3. 데이터 읽기 - 서버
  4. 데이터 기록 - 백그라운드(DBWR)
  5. SQL문의 결과 회신 - 서버
  6. 로그 기록 - 백그라운드(LGWR)
  7. 각종 정리 - 백그라운드(PMON)
  8. 로그 보관 -백그라운드(ARC0)

서버 프로세스 : 1, 2, 3, 5 역할 수행(수신-파싱-읽기-회신)

백그라운드 프로세스 : 4, 6, 7, 8 역할 수행 

- 예를 들어 '4. 데이터 기록'은 서버 프로세스가 하지 않고 DBWR이 한다. 즉 서버 프로세스는 디스크에서 데이터를 읽어오지만 데이터를 기록은 하지 않는다.

- 서버 프로세스가 모든 일을 다 하게 되면 회신이 늦어지는 단점이 생겨 이를 백그라운드 프로세스에게 넘기고 클라이언트 응대에 집중한다.

 

 

*참고로 서버 프로세스는 shadow process, foreground process 라고도 불린다. 서버 프로세스라는 용어는 오라클에서만 클라이언트의 요청에 대응하여 SQL을 처리하는 프로세스를 가리키기 위해 쓰이는 용어에 가깝다.

 

 

공식 문서

https://docs.oracle.com/en/database/oracle/oracle-database/19/cncpt/process-architecture.html#GUID-A4FA88C6-8447-4636-911C-5864E0DC8572

 

 

728x90