IBM DB2 아키텍쳐 및 프로세스 모델 - 1. DB2 Architecture & Engine Components
2010.12.06 19:20
원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어
Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
원문 : http://www.ischo.net -- 조인상 //시스템 엔지니어
출처 : IBM Software Group - IBM DB2 Technical Evangelist - 왕천재님 자료에서 발췌
IBM DB2 아키텍쳐 및 프로세스 모델
1. DB2 Architecture & Engine Components
2. DB2 Process Model
3. DB2 Memory Model
1. DB2 Architecture & Engine Components
1. DB2 버전별 차이점
< DB2 9.1 - 프로세스 기반 모델 >
- 각 원들은 OS의 프로세스들이다.
< DB2 9.5 이후 - 다중 스레드 기반 프로세스 모델 >
- 빨간색 네모상자는 인스턴스를 제공하는 단일 OS 프로세스(db2sync)를 의미한다. 그 안의 원들은 OS 스레드이다.
- 9.5 이후부터는 스레드 기반으로 바뀐걸 표시하고 있다.
2. DB2 아키텍쳐 설명
1. 새 멀티스레드 기반 메모리모델의 장점
- 더 단순하고 쉽게 구성된다.
@ 구성 메모리와 메모리 heap
@ 간단해진 메모리 구성
2. 새 모델은 리소스를 저장한다.
- OS file descriptor 사용이 현저하게 줄어들었다.
Process 와 Thread 의 가장 분명한 차이는 Process 안의 모든 Threads 가 동일한 메모리 공간과
시스템 정의기능(system-defined facility)을 공유한다는 것이다.
이 기능에는 Open File Handle(File descriptor), Shared Memory, 프로세스 동기화 원본(Primitive), 현재 디렉토리가 포함된다.
Process내 모든 Thread는 같은 File descriptor를 공유할 수 있다. 각 에이전트가 자신의 File descriptor table을 가질 필요가 없다.
3. 성능이 향상되었다.
- 일반적으로 OS는 다른 프로세스 간에서보다 같은 프로세스내 Thread 간에 더 빨리 Context Switch (문맥교환)할 수 있다.
Memory Address 공간을 전환할 필요가 없다.
Global Memory 가 공유되고 새 메모리를 할당할 필요가 없으므로 Thread를 만드는 것이 Process를 만드는 것보다 더 간단하고 빠르다.
프로세스 생성은 Processor Cycle과 Memory 사용량 측면에서 비용이 많이든다.
4. 자동화되고 동적인 파라미터가 많기 때문에 DBA가 수행해야할 작업이 줄어들었다.
5. 프로세스 모델이 이제 Linux,Unix,Windows 각각 플랫폼에서 모두 똑같다.
3. 단일 데이터베이스 파티션의 아키텍쳐
1. DB2 엔진은 고유한 기능을 담당하는 여러개의 EDU(Engine Dispatchable Unit)로 구성되어 있으며, 각 EDU는 UNIX에서 Thread로 구현된다.
2. 어플리케이션이 DB에 접속을 요청하면 전용 CoornidatorAgent 프로세스가 생성되어 어플리케이션을 대신하여 DB에게 필요한
SQL문의 실행을 요청하는 역할을 하게 된다. 클라이언트와 서버사이의 통신에는 TCP/IP, APPC, Netbios 등의 프로토콜이 지원된다.
3. 에이전트 프로세스가 필요한 데이터를 가져오기 위하여 Prefetch Queue를 통해 비동기방식의 읽기요청을 하면 Prepatcher 프로세스는 big-block I/O를 통해 요청된 페이지들을 버퍼풀로 미리 가져오므로 에이전트 프로세스는 디스크 I/O 대기시간을 줄일수 있다.
4. 페이지 클리너는 백그라운드 EDU로 특정상황이 될때마다 버퍼풀의 DirtyPage를 디스크로 미리 반영하여 버퍼풀의 가용공간을 확보함으로써 버퍼풀을 사용하는 에이전트프로세스가 대기하는 일이 없도록 한다.
5. 변경된 데이터 페이지와 로그레코드는 성능을 위해 디스크로 즉시 반영되지 않는다. 변경된 데이터를 디스크에 반영할때는 반드시 로그파일에 먼저 기록된다. 이러한 방식을 Write Ahead Logging 이라고 한다.
- SMP 머신에서 파티션내 병렬 기능을 이용하면, 여러개의 SubAgent를 이용하여 쿼리를 병렬로 처리할 수 있다.
- 에이전트프로세스의 생성과 제거로 인한 오버헤드를 줄이기 위해 에이전트프로세스를 위한 POOL을 운영할 수 있다.
- 데이터가 여러 디스크에 걸쳐 스트라이핑 되어있다면, 여러개의 Prefetcher 를 지정하여 여러디스크를 동시에 Access 할 수 있도록 한다.
4. 다중 데이터베이스 파티션의 아키텍쳐
- 다중데이터베이스 파티션 환경에서 클라이언트에게는 단일 데이터베이스 관점으로 보인다.
- 다중 파티션에서 환경변수, 전역 수준 프로파일 레지스트리, DB 환경 및 디렉토리등을 공유하는것을 알 수 있다.
1. DB2 UDB(버전 8.x)의 Data Partitioning Feature는 다중 데이터베이스 파티션 기능을 이용하여 병렬데이터베이스를 구축한다.
다중 데이터베이스 파티션에 생성된 데이터베이스는 사용자에게는 한개의 논리적인 데이터베이스로 인식되지만, 각 파티션에 물리적으로 데이터베이스를 생성한다. 파티션별로 생성된 데이터베이스는 일반적인 단일 데이터베이스와 동일하게 독립적인 자원을 사용할 수 있으므로 각 파티션은 버퍼풀, 잠금관리, 디스크등을 독립적으로 운영하게 된다.
2. 데이터베이스 파티션은 동일한 머신에 생성되는 논리적 파티션과 다른 머신에 생성되는 물리적 파티션으로 구분된다. 동일한 머신에 존재하는 데이터베이스 파티션들은 공유 메모리를 이용하여 통신하고, 다른 머신에 존재하는 데이터베이스 파티션끼리는 고속의 네트워크을 통해서 필요한 부분만 통신한다.
5. DB2 Database System
6. DB2 Architecture
1. DB2 Engine Components
- OSS : Operating System Services : Sqlo~
"모든operating system call을 만들고 모든memory 관리와 file I/O를 조정하며 Process를 생성한다. "
Memory management
File input and output (disk access)
Process and thread creation and management
Semaphore processing
Authentication with the operating system"
- EDU : Engine Dispatch able Unit :
"데이터베이스 애플리케이션의 요청 처리, 데이터베이스 로그 파일 읽기, 로그 버퍼의 로그 레코드를 디스크의 로그 파일로 플러시하는 것과 같은 여러 작업 수행을 담당한다."
- BSU : Base Service Utilities : Sqle~
"db2 instance의main 엔진으로db2start시EDU( engine dispatchable Units)라고 불리는다른 components의 process를 invoke 하고memory를 할당 하는 등의 일을 한다. "
- SQMO : Memory Optimizer :
" Memory balancing 서비스를 하며 동적memory 할당 관리를 지원한다 "
- RDS : Relational Data Services : Sqlr~
"Common Client (CCI) 의function pointer로부터invoke되며statement를 최적화 하여plan을 만들고 data 추출을 위해 이 plan을DMS에 보내는 일을한다. DMS로 부터 받은result set은CCI를 통해application으로 넘겨준다. "
- DMS : Data Management Services : Sqld~
"RDS로부터access plan을 받아 그 plan대로 data를 추출한다. Data 추출을 위해 index manager, sort list services, file manager등을call한다. Result set을RDS로 반환한다."
- SLS : Sort List Services : Sqls~
"DMS에 의해 호출되며 Index build 나 order by, group by 등에 의한 정렬을 수행한다."
- IXM : Index Manager : Sqli~
"DB2에 있는 모든 index 관리를 하며 Multi Multi-dimensional clustered indexes와 Online Index reorganization 및rebuild를 포함한다."
- DPS : Data Protection Services : Sqlp~
"logging, locking과 같이data 정합성을 보장하는 기능을 제공한다. "
- BPS : Buffer Pool Services : Sqlb~
"모든 data, index, temp overflow page는 buffer pool에서 가공되며, file storage나 raw storage manager를 사용하여OSS를 통해 page를 읽어온다."
- CCI : Common Client : Sqlc~, sqlkf~
"모든client/server communication을 조정한다."
댓글 0
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
9 | IBM informix administrator's guide for 11.70 | 조인상 | 2014.12.26 | 7227 |
8 | DB2 우수 사례 : IBM Smart Analytics System을 위한 DB2 인스턴스 복구 | ischo | 2010.12.30 | 10789 |
7 | IBM DB2 User's Guide | 조인상 | 2010.12.22 | 32533 |
6 | IBM DB2 제품군 | 조인상 | 2010.12.14 | 9165 |
5 | DB2 Monitoring | 조인상 | 2010.12.13 | 10820 |
4 | IBM DB2 아키텍쳐 및 프로세스 모델 - 3. DB2 Memory Model | 조인상 | 2010.12.13 | 14751 |
3 | IBM DB2 아키텍쳐 및 프로세스 모델 - 2. DB2 Process Model | 조인상 | 2010.12.07 | 15103 |
» | IBM DB2 아키텍쳐 및 프로세스 모델 - 1. DB2 Architecture & Engine Components | ischo | 2010.12.06 | 17484 |
1 | IBM DB2 Overview | 조인상 | 2010.11.27 | 9257 |