오라클의 여러 프로세스
데이터베이스의 데이터는 모두의 것
오라클의 이미지
데이터베이스를 사용하지 않는 애플리케이션의 프로그래밍은 개개의 프로세스가 자신이 가진 변수(데이터)를 처리하는 것이 일반적이다. 같은 프로그램이 여러 개 실행되었다 하더라도 실제로 변수는 개개의 프로그램마다 가지고 있으므로 신경 쓸 필요가 없다.
하지만 데이터베이스에서는 다르다. 여러 프로세스나 사용자가 하나의 데이터베이스(데이터 집합)에 접근하기 때문이다. 기본적으로 데이터베이스에서는 데이터를 중복으로 보관하지 않으며 보관해서도 안 된다. 기본적으로 여러 사용자나 프로그램이 데이터베이스의 데이터를 공유한다.라고 생각하는 것이 중요하다.
프로세스와 스레드란?
프로세스는 실행 상태에 있는 프로그램을 의미한다. 실행 상태이기 때문에 메모리나 자원을 가지고 있다. 다르게 표현하면 실체화했다고 할 수 있다.
프로세스를 다르게 비유하면 프로그램이라는 거리에서 일하는 사람과 같다. 유닉스 위에서 프로그램이 여러 개 실행되어있어도 각각 다른 사람이므로 CPU가 여러개 있다면 동시에 처리한다.
이에 비에 스레드는 프로세스 내에 존재하는 실행 단위이다. 하나의 프로세스 안에서 처리를 병렬로 하고 싶을 때 사용한다. 어느 쪽이든 병렬로 처리하기 위한 구조이지만 가장 다른 점은 부하의 크기와 메모리 공유 여부이다. 스레드는 부하가 적지만 메모리를 스레드끼리 공유하기 때문에 주의해서 사용해야 한다.
오라클이 여러 개의 프로세스로 구성된 이유
그 이유 중 하나는 다중 처리를 하고 싶기 때문이다. SQL 처리는 길게는 몇 시간 넘게 걸리는 경우도 있다. 그동안 다른 사용자를 기다리게 할 수는 없다. 또한 디스크는 메모리 액세스에 비해서 속도가 매우 느리기 때문이다.(메모리에서는 나노초 단위, 디스크는 밀리초 단위) 속도가 느린 I/O가 반복되고 있는 동안 CPU와 같은 자원을 쉬게 하는 것은 아깝기 때문에 가능하다면 다른 SQL 처리를 해야 한다.
오라클에서 여러 개의 프로세스를 실행하는 것으로 병렬 처리를 한다. 단 오라클은 같은 프로세스가 여러 개 작동하는 것은 아니다.
서버 프로세스와 백그라운드 프로세스의 역할
백그라운드 프로세스의 일
오라클은 서버 프로세스라고 불리는 SQL문을 처리하는 프로세스와 백그라운드 프로세스라고 불리는 주로 서버 프로세스를 도와주는 프로세스가 있다. 고객에 해당하는 오라클 클라이언트와 오라클 클라이언트의 요청(SQL)을 처리하는 서버 프로세스가 존재한다. 오라클 클라이언트는 서버 프로세스와 통신한다.
각 프로세스가 수행하는 처리
DB에서 수행하는 주요 처리
- SQL문 수신
- SQL문 파싱(어떤 테이블에 접근해야 하는지를 생각하는 처리)
- 데이터 읽기(디스크에서 읽어온다.)
- 데이터 기록(디스크에 기록한다.)
- SQL 문의 결과 회신
- 로그 기록(데이터 갱신 로그를 디스크에 기록)
- 각종 정리(프로세스의 비정상 종료로 인한 아무도 사용하지 않는 락의 해제 등)
- 로그 보관(아카이브)
서버 프로세스는 서비스를 수행하는 프로세스이다. 오라클은 SQL문을 빠르게 처리하지 않으면 안 되므로 고객을 최우선으로 생각하는 영업 담당자와 거의 같은 업무를 한다.
SQL문의 처리에 필요한 작업
1, 2, 3, 5번이다.
SQL문을 수신하지 않으면 처리는 진행되지 않으며 파싱이라고 불리는 작업을 하지 않으면 어떤 테이블에 접근해야 하는지 조차 알 수 없다. 마지막에 데이터나 결과를 오라클 클라이언트에게 전달하지 않으면 종료할 수도 없다.
SQL 문의 결과를 회신하기 위해서 불필요한 처리는 다른 프로세스에게 맡겨 버리면 된다.
디스크에 데이터를 기록하는 일은 DBWR(데이터베이스 라이터)이 수행한다. 서버 프로세스는 디스크에서 데이터를 읽어오기는 하지만 기록은 하지 않는 이유가 그런 부분에 있다. 원칙적으로 각 프로세스의 역할 분담을 나누어 보면 SQL의 결과를 회신하는 데 필요한 것은 서버 프로세스가 수행하고, 그 이외의 것은 백그라운드 프로세서가 수행한다는 것을 알 수 있다.
Tips.
출처
그림으로 공부하는 오라클 구조
문제가 될 시 ks12b9189@naver.com으로 메일 주시면 게시글 바로 삭제하겠습니다.
'Oracle > Oracle 구조' 카테고리의 다른 글
그림으로 공부하는 오라클 구조 1장 (2) | 2022.11.05 |
---|