행위

전용서버 와 공유서버

DB CAFE

thumb_up 추천메뉴 바로가기


1 오라클 전용서버(Dedicated) 와 공유서버(MTS)[편집]

  • 서버프로세스와 클라이언트를 연결하는 방식
  1. 전용 서버(Dedicated Server) 방식
  2. 공유서버(Multi Thread Server) 방식
  • 전용서버 모드는 클라이언트 세션과 서버 프로세스가 1:1 관계 , MTS에서는 1:N 관계
  • 공유 서버는 공유 자원, 전용 서버는 그렇지 않음.
    • 공유 자원을 이용 할 때는 오랫동안 자원을 독점 하지 않도록 주의

1.1 전용 서버(Dedicated Server) 방식[편집]

  • 요청이 올때 마다 서버프로세스를 새로 생성해서 연결하고 요청/응답하고 제거하는 방식

1.1.1 연결 과정[편집]

  1. 사용자가 Database에 연결하면 Listener가 대기하고 있다가 사용자의 요청을 받아들인 후 해당 세션에 대한 정보를 PMON에게 알려줌
  2. PMON은 해당 세션을 위한 개별적인 작업 영역 PGA를 할당
  3. Dedicate Server 방식은 PMON의 상태에 절대적으로 종속되며, 특정 세션에 의해 PMON에 부하가 많이 발생한다면 해당 세션에만 문제가 발생하는 것이 아니라 전체 세션에까지 막대한 영향을 줄수있다.
  • SQL을 수행할 때마다 연결 요청을 반복하면 서버 프로세스의 생성과 해제도 반복하게 되므로 DBMS에 큰 부담이 된다.
  • 따라서 전용 서버 방식을 사용하는 OLTP성 애플리케이션에서는 Connection Pooling 기법을 사용해야 한다.

1.1.2 구성방법[편집]

  1. Init.ora 파일에 (SERVER = DEDICATED) 추가
  2. ps -ef |grep ora 로 확인
    1. oracle<SID> (LOCAL=NO) 형태로 프로세스 확인
  • Dedicated Server 방식으로 운영을 시에는 서버 당 4M정도의 메모리가 필요하므로 커넥션 갯수에 따라 메모리 용량 계산 필요.

1.2 공유 서버(MTS,Multi Thread Server) 방식[편집]

  • 하나의 서버 프로세스를 여러 사용자 세션이 공유하는 방식
  • 미리 여러 개의 프로세스를 띄워놓고 이를 공유해서 재사용한다.
  • Tuxedo, Tmax 등의 미들웨어와 비슷한 구조로 사용자의 접속, 요청 작업을 처리하기 위한 프로세스가 기동하여 동시의 여러 사용자의 작업에 대한 관리를 하는 Process를 가진다.
  • MTS를 구동하면 Request Que와 Response Que, Shared Server가 기동되고, Listener와 Request Que와 Response Que, Shared Server사이에서 데이터 요청, 요청 데이터의 사용자 전달 등을 하기 위한 Dispatcher Process가 존재

1.2.1 연결 과정[편집]

  1. 사용자가 연결을 요청
  2. 대기하고 있는 Listener가 연결 허용, 세션에 대한 정보를 여러 Dispatcher 중 하나의 Dispatcher에 이관 받아 처리하는 역할
  3. 연결 허용 후 사용자가 데이터를 요청하는 경우 Dispatcher는 Request Que에 해당 요청 내용을 저장하고 Shared Server는 Request Que를 Look Up하고 있다가 미처리된 작업이나 신규로 발생하는 작업을 확인하여 처리
  4. 처리 후에는 요구되는 데이터를 Response Que에 저장
  5. Dispatcher는 해당 Response Que에 요구 데이터의 저장이 확인되는 순간 바로 사용자에게 데이터를 리턴함.

1.2.2 구성방법[편집]

init.ora
###########################################
# MTS
###########################################
dispatchers="(PROTOCOL=TCP)(SERVICE=service_name)(dispatchers=10)"
max_dispatchers=20
shared_servers = 10
max_shared_servers = 20

1.2.3 확인방법[편집]

select * from v$shared_server;
select * from v$circuit;

1.3 주의사항[편집]

  • Oracle은 Dedicated Server와 MTS를 동시에 구성하여 작업할 수 있다.
    • 특정 사용자는 업무 Role별로 Dedicated Server로 접속을 유도하고 그 밖의 사용자는 MTS Server로 접속하게 할 수 있다.
  • MTS의 동작을 예를 들어 보면 서버에는 두개의 공유서버(Shared Server)가 존재하고 세개의 클라이언트가 30초 동안 수행하는 프로세스를 구동 한다고 했을 때 두개의 클라이언트는 30초만에 응답을 받을 수 있지만 한 클라이언트는 60초를 기다려야 한다는 것이다.
    • 즉 MTS의 경우 가능한 짧게 수행되는 트랜잭션을 대상으로 해야 한다는 것이죠… 그래서 MTS는 짧지만 자부 발생하는 트랜잭션을 가지는 OLTP 시스템에 적합하다고 할 수 있습니다.

1.3.1 MTS의 장점[편집]

  1. 운영체제의 프로세스/스레드 수를 감소
  2. 동시성의 정도를 의도적으로 줄일 수 있음.(동시 사용자가 늘어 어느 시점에 이르면 시스템이 처리할 수 있는 트랜잭션의 한계에 이르며 최대 동시 접속을 이 지점 이전으로 제한 한다면 시스템의 최대 처리량을 유지 하면서 대부분의 사용자들에게 응답시간이 늘어 나는 것을 제한 할 수 있다)
  3. 시스템에서 필요한 메모리를 줄입니다.
    1. MTS를 이용하면 UGA는 SGA안에 존재
    2. MTS 연결 모드에서는 먼저 예상되는 UGA의 메모리 량을 적절히 추측하고 LARGE_POOL을 통해 SGA안에서 적절히 할당을 하라는 의미
  4. 데이터베이스에서 EJB를 사용하기로 했다면 반드시 MTS를 사용해야 합니다.
  • 시스템이 과부하가 없으며 MTS를 사용할 이유가 없다면 전용 서버가 최선의 선택입니다.
  • 전용 서버의 경우 설정이 간단하며 튜닝이 쉬운 장점이 있습니다.
  • 전용 서버에서만 수행되는 연산이 있으므로 일반적으로 모든 데이터베이스는 양쪽 모드를 동시에 사용 하거나 전용 서버 모드만을 가집니다.
    • 만약 상당히 많은 사용자를 가진 DB Application을 개발 한다면 반드시 MTS에서 개발하고 테스트를 해야 합니다.
    • MTS에서 TEST를 하지 않았다면 애플리케이션 및 시스템 오류를 증가 시키게 됩니다.