프로세스란?
- 실행 상태에 있는 프로그램. 실행 상태라서 메모리나 자원을 가지고 있다.
스레드
- 프로세스 내에 존재하는 실행 단위. 하나의 프로세스 안에서 처리를 병렬로 하고 싶을 때 사용
일반적인 프로세스와 데이터베이스 프로세스의 차이
- 데이터베이스를 사용하지 않는 프로그래밍에서는 일반적으로 개개의 프로세스가 자신이 가진 변수(데이터)를 처리하는 것이 일반적이지만 데이터베이스의 프로세스는 여러 프로세스나 사용자가 하나의 데이터베이스(데이터 집합)에 접근한 다는 점이 큰 차이점이다. 즉, 여러 사용자나 프로그램이 데이터베이스의 데이터를 공유한다.
오라클이 여러 개의 프로세스로 구성된 이유
위의 그림을 보면 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등 데이터베이스 입장에서의 사용자를 의미한다.
각 프로세스가 수행하는 처리
- SQL문의 수신 - 서버
- SQL문의 파싱 - 서버
- 데이터 읽기 - 서버
- 데이터 기록 - 백그라운드(DBWR)
- SQL문의 결과 회신 - 서버
- 로그 기록 - 백그라운드(LGWR)
- 각종 정리 - 백그라운드(PMON)
- 로그 보관 -백그라운드(ARC0)
서버 프로세스 : 1, 2, 3, 5 역할 수행(수신-파싱-읽기-회신)
백그라운드 프로세스 : 4, 6, 7, 8 역할 수행
- 예를 들어 '4. 데이터 기록'은 서버 프로세스가 하지 않고 DBWR이 한다. 즉 서버 프로세스는 디스크에서 데이터를 읽어오지만 데이터를 기록은 하지 않는다.
- 서버 프로세스가 모든 일을 다 하게 되면 회신이 늦어지는 단점이 생겨 이를 백그라운드 프로세스에게 넘기고 클라이언트 응대에 집중한다.
*참고로 서버 프로세스는 shadow process, foreground process 라고도 불린다. 서버 프로세스라는 용어는 오라클에서만 클라이언트의 요청에 대응하여 SQL을 처리하는 프로세스를 가리키기 위해 쓰이는 용어에 가깝다.
공식 문서
'Computer Science > Database' 카테고리의 다른 글
그림으로 공부하는 오라클 구조 - Ch4. SQL문 분석과 공유 풀 (0) | 2024.04.13 |
---|---|
그림으로 공부하는 오라클 구조 - Ch3. 캐시와 공유 메모리 (0) | 2024.04.13 |
그림으로 공부하는 오라클 구조 - Ch1. I/O와 디스크의 관계 (1) | 2024.04.03 |
(작업중)1. SQL 수행 구조 및 처리 과정과 I/O (0) | 2023.12.14 |
SQLD 정리 2 (1) | 2023.03.18 |