Db2 프로세스 모델

DB2 프로세스 모델에 대한 지식은 데이터베이스 관리자 및 연관된 구성요소가 상호작용하는 방식을 이해하는 데 도움이 됩니다. 또한 발생할 수 있는 문제점 해결에도 도움이 될 수 있습니다.

모든 DB2 데이터베이스에서 사용하는 프로세스 모델은 데이터베이스 서버와 클라이언트 간의 통신을 용이하게 합니다. 또한 데이터베이스 애플리케이션이 데이터베이스 제어 블록 및 중요한 데이터베이스 파일과 같은 자원에서 분리됩니다.

DB2 데이터베이스 서버는 데이터베이스 애플리케이션 요청 처리 또는 로그 레코드가 디스크에 기록되는지 확인하는 것과 같은 여러 가지 태스크를 수행해야 합니다. 각 태스크는 일반적으로 별도의 엔진 디스패치 가능 장치(EDU)에서 수행합니다.

DB2 데이터베이스 서버에 멀티스레드 아키텍처를 사용할 경우 여러 가지 장점이 있습니다. 새 스레드는 프로세스보다 메모리와 운영 체제 자원이 적게 필요합니다. 일부 운영 체제 자원은 동일한 프로세스의 모든 스레드가 공유할 수 있습니다. 또한 일부 플랫폼에서 스레드의 컨텍스트 전환 시간이 프로세스의 경우보다 적게 걸리므로 성능이 향상될 수 있습니다. 모든 플랫폼에서 스레드 모델을 사용하면 DB2 데이터베이스 서버를 구성하기 쉬워집니다. 필요할 때 추가 EDU를 쉽게 할당할 수 있으며 여러 EDU가 공유해야 하는 메모리를 동적으로 할당할 수 있기 때문입니다.

액세스하는 각 데이터베이스마다 프리페치, 통신 및 로깅과 같은 다양한 데이터베이스 태스크를 처리하도록 개별 EDU가 시작됩니다. 데이터베이스 에이전트는 데이터베이스에 대한 애플리케이션 요청을 처리하기 위해 작성되는 EDU의 특수 클래스입니다.

일반적으로 DB2 데이터베이스 서버에 의존하여 EDU 세트를 관리할 수 있습니다. 그러나 EDU를 검색하는 DB2 도구가 있습니다. 예를 들어, db2pd 명령을 -edus 옵션과 함께 사용하여 활성화된 EDU 스레드를 모두 나열할 수 있습니다.

각 클라이언트 애플리케이션 연결에는 데이터베이스에서 작동하는 단일 코디네이터 에이전트가 있습니다. 코디네이터 에이전트는 애플리케이션 대신 작동되고 필요에 따라 개인용 메모리, 프로세스간 통신(IPC) 또는 원격 통신 프로토콜을 사용하여 다른 에이전트와 통신합니다.

Db2 pureScale® 인스턴스에 있는 동안 이러한 프로세스는 호스트에서 실행 중인 Db2 멤버 및/또는 클러스터 캐싱 기능 (CF) 의 상태를 모니터하고 인스턴스의 모든 Db2 멤버 및 CF에 클러스터 상태를 분배하는 데 사용됩니다.

Db2 아키텍처는 애플리케이션이 Db2 데이터베이스 서버와 다른 주소 공간에서 실행되도록 방화벽을 제공합니다 (그림 1). 방화벽은 애플리케이션, 스토어드 프로시저 및 사용자 정의 함수(UDF)로부터 데이터베이스 및 데이터베이스 관리자를 보호합니다. 방화벽은 애플리케이션 프로그래밍 오류가 내부 버퍼 또는 데이터베이스 관리자 파일을 겹쳐쓰지 못하도록 예방하므로 데이터베이스에서 데이터의 무결성을 유지합니다. 또한 애플리케이션 오류가 데이터베이스 관리자를 손상할 수 없으므로 방화벽은 신뢰성을 향상시킵니다.
그림 1. DB2 데이터베이스 시스템의 프로세스 모델
Db2database 시스템에 대한 프로세스 모델의 그래픽 표시

클라이언트 프로그램

클라이언트 프로그램은 원격 또는 로컬이며 데이터베이스 서버와 동일한 머신에서 실행됩니다. 클라이언트 프로그램은 통신 리스너를 통해 데이터베이스에 먼저 접속합니다.

리스너

DB2 데이터베이스 서버가 시작되면 통신 리스너가 시작됩니다. 구성된 각 통신 프로토콜의 리스너와 로컬 클라이언트 프로그램의 프로세스간 통신(IPC) 리스너(db2ipccm)가 있습니다. 리스너는 다음과 같습니다.
  • db2ipccm: 로컬 클라이언트 연결용
  • db2tcpcm: TCP/IP 연결용
  • db2tcpdm: TCP/IP 발견 도구 요청용

에이전트

로컬 또는 원격 클라이언트 프로그램 (애플리케이션) 의 모든 연결 요청에는 해당 코디네이터 에이전트 (db2agent) 가 할당됩니다. 코디네이터 에이전트가 작성되면 애플리케이션 대신 모든 데이터베이스 요청을 수행합니다.

파티션된 데이터베이스 환경 또는 쿼리간 병렬 처리를 사용할 수 있는 시스템에서 코디네이터 에이전트는 데이터베이스 요청을 서브에이전트(각각 db2agntpdb2agnts)로 분배합니다. 애플리케이션과 연관되어 있지만 현재 유휴 상태인 서브에이전트의 이름은 db2agnta입니다.

코디네이터 에이전트는 다음을 수행할 수 있습니다.
  • 별명을 사용하여 데이터베이스에 연결됩니다. 예를 들어, db2agent (DATA1) 는 데이터베이스 별명 DATA1에 연결됩니다.
  • 인스턴스에 접속될 수 있습니다. 예를 들어, db2agent (user1)가 인스턴스 user1에 접속됩니다.

DB2 데이터베이스 서버는 특정 조작을 실행하도록 독립 코디네이터 에이전트 또는 서브코디네이터 에이전트와 같은 기타 에이전트 유형을 인스턴스화합니다. 예를 들어, 독립 코디네이터 에이전트 db2agnti는 이벤트 모니터를 실행하는 데 사용되고 서브코디네이터 에이전트 db2agnsc는 비정상 종료 후 데이터베이스 재시작 조작을 병렬 처리하는 데 사용됩니다.

게이트웨이 에이전트(db2agentg)는 원격 데이터베이스와 연관된 에이전트입니다. 이는 클라이언트가 호스트 데이터베이스에 액세스할 수 있는 직접 연결성을 제공합니다.

유휴 에이전트는 에이전트 풀에 상주합니다. 이러한 에이전트는 클라이언트 프로그램 대신 작동되는 코디네이터 에이전트 또는 기존 코디네이터 에이전트 대신 작동되는 서브에이전트의 요청에 사용할 수 있습니다. 적합한 크기의 유휴 에이전트 풀이 있으면 상당한 애플리케이션 워크로드가 있을 때 성능이 향상될 수 있습니다. 이 경우 유휴 에이전트를 필요하면 즉시 사용할 수 있으며 각 애플리케이션 연결마다 새로운 에이전트를 할당하지 않아도 됩니다. 만약 이와 같이 할당하려면 스레드를 작성하고 메모리 및 기타 자원을 할당 및 초기화해야 합니다. DB2 데이터베이스 서버가 유휴 에이전트 풀의 크기를 자동으로 관리합니다.

풀링된 에이전트를 원격 데이터베이스 또는 로컬 데이터베이스와 연결할 수 있습니다. 원격 데이터베이스에서 풀링된 에이전트를 풀링된 게이트웨이 에이전트 (db2agntgp) 라고 합니다. 로컬 데이터베이스에서 풀링된 에이전트를 풀링된 데이터베이스 에이전트 (db2agntdp) 라고 합니다.

db2fmp

분리 모드 프로세스는 방화벽 외부에서 분리(fenced) 스토어드 프로시저 및 사용자 정의 함수(UDF)의 실행을 담당합니다. db2fmp 프로세스는 항상 별도의 프로세스이지만 실행하는 루틴의 유형에 따라 멀티스레드일 수 있습니다.

db2vend

db2vend 프로세스는 EDU 대신 벤더 코드를 실행하는 프로세스입니다. 예를 들어, 로그 아카이브를 위해 User Exit 프로그램을 실행하는 프로세스입니다 (UNIX 전용).

데이터베이스 EDU

다음의 목록은 각 데이터베이스에서 사용하는 중요한 EDU 중 일부입니다.
  • db2castructevent: pureScale 클러스터에서 CF 출발 및 도착 처리를 처리합니다.
  • db2CFConnPoolMgr: pureScale 클러스터의 멤버-CF 링크 간에 CF 연결을 재조정합니다.
  • db2cfmt: pureScale 클러스터의 동적 CF 메모리 튜닝입니다.
  • db2clstrRscMon: pureScale 클러스터의 네트워크 어댑터 상태 변경사항을 모니터합니다.
  • db2dlock: 교착 상태 발견용. 파티션된 데이터베이스 환경에서 추가 스레드(db2glock)는 각 파티션의 db2dlock EDU에서 수집하는 정보를 조정하는 데 사용됩니다. db2glock은 카탈로그 파티션에서만 실행됩니다. Db2 pureScale 환경에서 db2glock EDU는 각 멤버에서 db2dlock EDU가 수집하는 정보를 조정하는 데 사용됩니다. db2glock EDU는 각 멤버에서 시작되지만 오로지 하나만 활성 상태입니다.
  • db2fw: 이벤트 모니터 데이터를 테이블, 파일 또는 파이프에 대량 병렬 쓰기하는 데 사용되는 이벤트 모니터 급속 기록기
    • db2fwx, 이벤트 모니터 급속 기록기 스레드이며, 여기서 "x"는 스레드 번호를 식별합니다. 데이터베이스 활성화 중에 Db2엔진은 db2fwx 스레드 수를 이벤트 모니터의 성능에 최적인 값으로 설정하고 다른 유형의 워크로드가 실행될 때 잠재적인 성능 문제점을 방지합니다. db2fwx 스레드 수는 해당 시스템의 논리적 CPU 수와 동일합니다(멀티코어 CPU의 경우, 각 코어가 하나의 논리적 CPU로 계수됨). DPF 인스턴스의 경우, 파생된 db2fwx 스레드 수가 멤버당, 데이터베이스당 논리적 CPU 수를 호스트의 논리적 파티션 수로 나눈 값과 같습니다.
  • db2hadrp: 고가용성 재해 복구(HADR) 기본 서버 스레드
  • db2hadrs: HADR 대기 서버 스레드
  • db2lfr: 개별 로그 파일을 처리하는 로그 파일 판독기용
  • db2loggp: 복구 창 판별과 같은 주기적인 로그 작업용
  • db2loggr: 트랜잭션 처리 및 복구를 처리하는 로그 파일 유지보수용
  • db2loggrq, pureScale 환경에서 HADR이 사용하는 보조 원격 캐치업 논리의 경우
  • db2loggw: 로그 파일에 로그 레코드 쓰기용
  • db2logmgr: 로그 관리자용. 복구 가능한 데이터베이스의 로그 파일을 관리합니다.
  • db2logts: 어느 테이블스페이스에 어느 로그 파일의 로그 레코드가 있는지 트래킹. 이 정보는 데이터베이스 디렉토리의 DB2TSCHG.HIS 파일에 기록됩니다.
  • db2lused: 오브젝트 사용 갱신용
  • db2periodic: 주기적으로 실행해야 하는 내부 데이터베이스 태스크를 실행합니다.
  • db2pclnr: 버퍼 풀 페이지 클리너용
  • db2pcsd: 패키지 캐시 자동 정리
  • db2pfchr: 버퍼 풀 프리페처용
  • db2pkgrb: 유효하지 않은 패키지의 자동 리바인드용. 데이터베이스 카탈로그 노드 시작 중에 db2pkgrb 는 유효하지 않은 각 패키지를 리바인드하려고 한 번 시도합니다. 자동 유효성 재확인을 사용 안함으로 설정하지 않으면(즉, auto_reval 데이터베이스 구성 매개변수를 DISABLED로 설정하지 않으면) db2pkgrb이 각 작동 불능 패키지에 대한 리바인드도 시도합니다. 이후로 다음에 시작할 때까지 종료됩니다. 목록 처리가 완료되면, 종료 직전에 INF 레벨의 diag.log에 요약 메시지가 기록됩니다. 업그레이드 이후로 첫 번째 리바인드 시도이면, 모든 실패 리바인드에 대한 상세 메시지가 INF 레벨의 diag.log에 기록됩니다. 다른 모든 시작에 대해서는 요약 메시지만 생성됩니다.
  • db2redom: 다시 실행 마스터용. 복구 중 재실행 로그 레코드를 처리하고 재실행 작업자에게 처리할 로그 레코드를 지정합니다.
  • db2redow: 재실행 작업자용. 복구 중 재실행 마스터의 요청에 따라 재실행 로그 레코드를 처리합니다.
  • db2shred: 로그 페이지의 개별 로그 레코드 처리용
  • db2stmm: 자체 튜닝 메모리 관리 기능용
  • db2taskd: 백그라운드 데이터베이스 태스크 분산용. 이러한 태스크는 db2taskp라는 스레드가 실행합니다.
  • db2wlmd: 워크로드 관리 통계의 자동 수집용
  • db2dbctrld: 주기적 데이터베이스 관련 태스크용.
  • 이벤트 모니터는 다음과 같이 식별됩니다.
    • db2evm%1%2 (%3)
      여기서 %1 은 다음과 같습니다.
      • g- 전역 파일 이벤트 모니터
      • gp - 전역 파이프 이벤트 모니터
      • l - 로컬 파일 이벤트 모니터
      • lp - 로컬 파이프 이벤트 모니터
      • t - 테이블 이벤트 모니터
      %2 은 (는) 다음일 수 있습니다.
      • i - 코디네이터
      • p - 코디네이터 아님
      %3은 이벤트 모니터 이름입니다.
  • 백업 및 복원 스레드는 다음과 같이 식별됩니다.
    • db2bm.%1.%2(백업 및 복원 버퍼 조작기) 및 db2med.%1.%2(백업 및 복원 미디어 제어기). 여기서,
      • %1은 백업 또는 복원 세션을 제어하는 에이전트의 EDU ID입니다.
      • %2는 특정 백업 또는 복원 세션에 속한 스레드(여러 개일 수 있음)를 구별하는 데 사용되는 순차 값입니다.
      예를 들어, db2bm.13579.2는 EDU ID가 13579인 db2agent 스레드에서 제어하는 두 번째 db2bm 스레드를 식별합니다.
  • db2XInot- pureScale 클러스터 에서 Xi 무효화를 처리합니다.
  • 다음 데이터베이스 EDU는 Db2 pureScale 환경에서 잠금에 사용됩니다.
    • db2LLMn: pureScale 클러스터의 CF 프로세스 GLM/GCL 구조에서 잠금 통지를 처리합니다.
    • db2LLMn1: 전역 잠금 관리자가 보낸 정보를 처리합니다. 각 멤버에 두 개의 EDU가 있습니다. 하나는 기본 CF용이고 다른 하나는 보조 CF 용입니다.
    • db2LLMn2-데이터베이스 활성화 및 비활성화 처리 중에 사용되는 특수 유형의 잠금에 대해 전역 잠금 관리자 가 보낸 정보를 처리합니다. 각 멤버에는 두 개의 EDU가 있습니다. 하나는 기본 CF용이고 다른 하나는 보조 CF 용입니다.
    • db2LLMng: 다른 멤버가 이 멤버가 보유한 잠금에 대해 대기하고 있을 때 이 잠금이 때에 맞게 해제되도록 하는 데 사용됩니다.
    • db2LLMrl- 전역 잠금 관리자 에 대한 잠금 해제를 처리합니다.
    • db2LLMrc-데이터베이스 복구 조작 및 CF 복구 중에 발생하는 처리의 경우
    • db2LLMrf: pureScale 클러스터에서 연결 삭제 및 재설정이 발생할 경우 CF 프로세스가 있는 잠금 통지 재동기화 논리를 처리합니다.

데이터베이스 서버 스레드 및 프로세스

데이터베이스 서버가 작동하려면 시스템 컨트롤러 (UNIX의 경우db2sysc , Windows 운영 체제의 경우 db2syscs.exe ) 가 있어야 합니다. 다음 스레드 및 프로세스는 다양한 태스크를 수행합니다.
  • db2acd: 시스템 상태 모니터 및 자동 유지보수 유틸리티 및 관리 태스크 스케줄러를 호스트하는 자율 컴퓨팅 디먼. 이 프로세스를 이전에는 db2hmon이라고 했습니다.
  • db2aiothr는 데이터베이스 파티션에 대한 비동기 입출력 요청을 관리합니다 (UNIX 전용).
  • db2alarm는 요청된 타이머가 만료되면 EDU에 알립니다 (UNIX 전용).
  • db2disp: 클라이언트 연결 집중기 디스패처
  • db2fcms: FCM(Fast Communication Manager) 전송자 디먼
  • db2fcmr: FCM(Fast Communication Manager) 수신자 디먼
  • db2fmd: 결함 모니터 디먼
  • db2iperiodic, 태스크 스케줄러 스레드. 태스크가 db2iperiodicWatch<task_number> 및 db2iperiodicExec<task_number> 스레드에서 실행됩니다.
  • db2licc: 설치된 DB2 라이센스를 관리
  • db2panic: 에이전트 한계에 도달한 후 긴급 요청을 처리하는 심각한 에이전트
  • db2pdbc, 원격 데이터베이스 파티션의 병렬 요청을 처리하는 병렬 시스템 제어기 (파티션된 데이터베이스 환경 및 Db2 pureScale 환경 모두에서 사용됨)
  • db2resync: 전역 재동기 목록을 스캔하는 재동기 에이전트
  • db2rocmdb2rocme, Db2 pureScale 인스턴스에 있는 동안 이러한 프로세스는 각 호스트에서 실행 중인 Db2 멤버 및 클러스터 캐싱 기능 (CF) 의 작동 상태를 모니터하고 인스턴스의 모든 Db2 멤버 및 CF에 클러스터 상태 정보를 분배합니다.
  • db2sysc: 주 시스템 제어기 EDU. 중요한 DB2 서버 이벤트를 처리합니다.
  • db2sysc (유휴), Db2 유휴 프로세스. 호스트에서 게스트 멤버 의 재시작 최소 모드로 재시작을 사용 가능하게 하며 상주 멤버 와 자원에 대해 경쟁하지 않습니다.
  • db2syscque, Db2 pureScale 환경에서 시스템 제어기에 요청 큐잉 및 분배 서비스를 제공하는 메시지 큐 리스너.
  • db2thcln: EDU가 종료될 때 자원을 재순환합니다 (UNIX 전용).
  • db2wdog, 비정상 종료를 처리하는 UNIX및 Linux® 운영 체제의 감시기.
  • db2wlmt: WLM 디스패처 스케줄링 스레드
  • db2wlmtm: WLM 디스패처 타이머 스레드