2024. 2. 11. 22:58ㆍDBMS/ORACLE Admin
Dispatcher는 Oracle 데이터베이스에서 클라이언트 요청을 처리하여 커넥션 관리를 담당하는 백그라운드 프로세스이다. 클라이언트 애플리케이션과 데이터베이스 인스턴스 간의 연결을 관리하고 효율적인 리소스 사용을 돕는다. 여러 클라이언트 애플리케이션이 동시에 데이터베이스에 연결하려고 할 때, 디스패처는 데이터베이스의 스케일링을 지원하여 동시 사용자 수가 증가할 때 리소스를 효율적으로 활용할 세션으로 연결을 제공한다.
■ load balancing
로드 밸런싱은 여러 서버 또는 리소스 사이에 작업 부하를 분산시켜 성능을 최적화하는 기술이다.
- 디스패처와 로드 밸런싱 간의 관련
로드 밸런서는 네트워크 트래픽을 여러 서버 또는 데이터베이스 인스턴스로 분산시켜 부하를 균형 있게 분배한다. 이 과정에서 디스패처는 클라이언트의 요청을 받아 적절한 데이터베이스 인스턴스로 전달하고, 이를 통해 부하가 분산된다.
1. user process거 디스패처 프로세스와 연결된다.
2. 디스패처는 공통 요청 큐인 SGA의 Request Queue에 사용자의 요청을 등록한다.
3. 공유 서버 프로세스는 요청 큐에서 요청을 확인하고 처리한다.
4. 처리 결과를 Response Queue에 등록한다.
5. 디스패처는 Response Queue에서 결과를 가져와 사용자에게 전달한다.
■ 설정
시스템이 처리할 수 있는 최대 디스패처 또는 공유 서버의 수는 시스템의 하드웨어 리소스 및 운영 체제의 제한에 따라 달라질 수 있다.
최대 디스패처 또는 공유 서버 수를 적절하게 설정하면 시스템의 성능과 확장성을 극대화할 수 있고 적게 설정하면 동시에 처리할 수 있는 클라이언트 수가 제한되어 성능이 저하될 수 있다.
최대 디스패처 또는 공유 서버 수를 10개로 설정하는 것은 일반적인 경우에 시스템의 성능과 확장성을 극대화하기에 안정적이다.
■ PGA 와 디스패처
PGA(Process Global Area)는 Oracle 데이터베이스에서 각 사용자 프로세스 또는 서버 프로세스에 할당된 메모리 영역이다.
PGA에는 해당 프로세스가 실행하는 SQL 문의 실행에 필요한 메모리 구조와 작업 영역이 포함된다.
공유 서버 환경에서는 각 서버가 개별적으로 사용자 프로세스의 세션 정보를 가지고 있는 것이 비효율적일 수 있다.
공유 서버 프로세스는 여러 클라이언트 세션을 처리하므로 이를 위해 사용자 프로세스 정보를 공유하는 것이 바람직한다.
그러나 PGA(Personal Global Area)는 공유되지 않기 때문에 SGA(Large Pool)에 위치한 UGA는 사용자 세션에 대한 정보를 저장하고 SGA의 Large Pool에 위치시키면 모든 서버가 이 정보를 공유할 수 있다. 따라서 공유 서버 환경에서는 UGA가 SGA의 Large Pool에 위치하여 서버 간에 사용자 세션 정보를 효율적으로 공유할 수 있게 된다. 이렇게 되면 PGA에는 스택 공간만 남게 되어 PGA의 공간을 최소화하여 메모리를 효율적으로 관리할 수 있게 된다.
1. 메모리 할당: 디스패처가 클라이언트 요청을 처리할 때, 해당 요청을 처리하기 위해 공유 서버 프로세스를 생성한다. 이러한 공유 서버 프로세스는 각각 PGA를 할당받아 작업을 수행한다. 즉, 클라이언트의 요청이 디스패처를 통해 공유 서버로 전달되면 해당 공유 서버가 자체적으로 메모리를 할당받아 작업을 수행한다.
2. 디스패처를 통해 처리되는 요청은 SHARED SERVER PROCESS 에 의해 처리된다. 여러 클라이언트가 동시에 작업을 수행할 때, PGA는 각각의 공유 서버 프로세스에 고유하게 할당되지만, 디스패처를 통해 요청이 분산되므로 PGA 자원을 효율적으로 공유할 수 있다.
PGA와 디스패처는 Oracle 데이터베이스에서 클라이언트 요청을 처리하는 데 관련이 있다. 디스패처는 클라이언트 요청을 처리하고 적절한 PGA를 할당하여 해당 요청을 처리할 수 있도록 하여 시스템의 리소스를 효율적으로 관리하고 성능을 최적화할 수 있다.
■ SGA 와 디스패처
SGA(System Global Area)는 Oracle 데이터베이스 인스턴스 전체에 대한 공유 메모리 구역이다. SGA에는 데이터베이스의 구조 및 상태 정보, 공유 데이터 및 버퍼 캐시, 공유 SQL 문 및 PL/SQL 코드의 실행 결과 등이 포함된다.
alter system set dispatchers = "(protocol=tcp)(dispatchers=2)";
--처음 시작 dispatcher 수정
ALTER SYSTEM SET MAX_DISPATCHERS =10;
1. 버퍼 캐시: SGA에는 데이터베이스의 데이터 블록을 저장하는 버퍼 캐시가 있다. 클라이언트가 데이터를 요청할 때, 해당 데이터가 버퍼 캐시에 존재하면 디스패처는 해당 데이터를 바로 반환할 수 있다. 이를 통해 I/O 비용을 줄이고 성능을 향상시킬 수 있다.
2. 공유 SQL 및 PL/SQL 코드: SGA에는 공유 SQL 문과 PL/SQL 코드의 실행 결과를 저장하는 공유 풀이 있다. 클라이언트가 동일한 SQL 문을 실행할 때, 해당 SQL 문의 실행 결과가 공유 풀에 캐시되어 있으면 디스패처는 이를 재사용하여 성능을 향상시킨다.
'DBMS > ORACLE Admin' 카테고리의 다른 글
PDB CDB (0) | 2024.02.15 |
---|---|
DB_CACHE_SIZE, LARGE_POOL_SIZE SHARED_POOL_SIZE (0) | 2024.02.14 |
PFILE(Parameter File)에서 SPFILE(System Parameter File)을 생성하는 이유 (0) | 2024.02.10 |
DATABASE DDL 구문 (0) | 2024.02.10 |
Static SQL, Dynamic SQL (0) | 2024.02.04 |