IBM DB2 아키텍쳐 및 프로세스 모델 - 3. DB2 Memory Model
2010.12.13 20:58
원문 : 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
3. DB2 Memory Model
[ DB2 메모리모델의 구조 ]
- DB2 V8~V9.1 까지의 메모리 모델 구성도
- DB2 V9.5 에서 변경된 메모리모델.
- V9.1 까지의 모델과 차이점을 살펴보면
= Instance Global Control Block 에 포함되어있었던 Sort Heap Threshold 항목이 Database Global Memory 쪽으로 변경
= Application 그룹에 할당되던 메모리를 빼고, Database 에 할당하여 Global 메모리를 공유메모리화
= 클라리언트에 할당되는 db2agent 에도 공유메모리 할당
- 위의 그림과 같이 메모리 구조가 할당된다.
- Instance shared memory
- Database Shared Memory
- Application Group shared Memory
- Agent Private Memory
1. Instance shared memory
: 인스턴스 공유 메모리 영역은 전체적인 DB2 세션들이 공유해서 사용할 수 있는 메모리 영역이다.
- 인스턴스를 기동할때 할당되고, 인스턴스를 중지할때 해제된다.
- Monitor heap, FCM, Audit buffer등이 포함.
- Monitor Heap : 스냅샷모니터, 이벤트 모니터등을 이용하여 모니터링 정보를 수집할때 사용되는 메모리 영역
MON_HEAP_SZ 인스턴스 구성 변수를 이용하여 조절
- FCM : 다중 데이터베이스 파티션 환경에서 파티션간의 통신에 사용되는 메모리 영역.
FCM_NUM_BUFFEERS 인스턴스 구성 변수를 이용하여 조절
- Audit Buffer : db2audit 유틸리티가 수집한 데이터를 저장하는 audit용 버퍼영역
db2chkau 프로세스는 audit용 버퍼에 저장된 데이터를 db2audit.log파일에 비동기식으로 기록.
AUDIT_BUF_SZ 인스턴스 구성변수를 이용하여 조절
2. Database Shared Memory
: 데이터베이스 공유 메모리 공간은 실제 agent 들의 요청을 받아서 요청을 처리하는 메모리 공간이다.
- 데이터베이스가 활성화 될때 할당되고, 비활성화되면 해제.
- Buffer pool, Database Heap, Catalog Cache, Log buffer, Lock List, Package Cache, Shared Sort heap, Utility Heap 등이 포함.
- Buffer Pool : 버퍼풀은 테이블 및 인덱스 데이터 페이지를 디스크에서 읽거나 수정할때 캐시하기 위해 사용되는 메모리이다.
버퍼풀은 디스크 대신 메모리에서 데이터를 Access 할 수 있도록 허용함으로써 성능을 향상시킨다.
- Database Heap : 테이블, 인덱스, 테이블스페이스, 버퍼풀 등의 데이터베이스 오브젝트에 대한 Control Block 정보를 저장하고,
Log Buffer와 Catalog Cache를 포함하는 영역으로 데이터베이스 구성변수인 DBHEAP 을 이용하여 동적으로
조절할 수 있음
- Catalog Cache : SQL문을 컴파일 하는 동안 SYSIBM.SYSTABLES, SYSIBM.SYSDBAUTH, SYSIBM.SYSROUTINES 등의
시스템카탈로그의 정보를 저장하는 메모리영역으로 Database Heap 에서 할당되며,
CATALOGCACHE_SZ 변수로 동적으로 조절
- Log Buffer : 로그 레코드를 디스크의 로그파일에 기록하기전에 버퍼링하는 메모리 영역으로 Database Heap에서 할당되며
데이터베이스 구성변수인 LOGBUFSZ를 이용하여 동적으로 조절
- Lock List : 데이터베이스에 접속된 모든 어플리케이션이 보유하고 있는 테이블과 행잠금 정보를 저장하는 메모리영역.
LOCKLIST변수로 조절
- Package Cache : Static 및 dynamic SQL문을 젖아하는 캐시영역으로 Static SQL문이 포함된 패키지를 reload하거나
Dynamic SQL문을 재컴파일 하는 내부적인 오버헤드를 줄여준다. PCKCACHESZ 변수로 조절한다.
- Shared Sort Heap : Shared Sort Memory는 SubAgent 들이 정렬작업을 병렬로 처리하고, 그 결과를 공유하기 위해 사용하는
메모리영역. SHEAPTHRES_SHR 변수로 조절한다.
- Utility Heap : Load, Backup, Restore, Runstats 등의 유틸리티가 실행될때 사용하는 메모리 영역으로 동적으로 조절가능.
유틸리티가 수행도리때 할당되고, 유틸리티가 종료되면 반환된다. UTIL_HEAP_SZ 변수로 조절한다.
3. Application Group shared Memory
: 해당 응용프로그램에 연관된 모든 에이전트 프로세스 사이의 정보를 교환을 위해 사용되는 영역.
- 병렬처리가 가능한 환경에서 응용프로그램의 첫번째 에이전트 프로세스가 데이터베이스에 연결을 요청하는 경우에 할당.
- 해당 응용프로그램과 연관된 모든 EDU들이 Access 할 수 있다.
- 특정 응용프로그램의 요청을 처리하는 SubAgent 와 Coordinator Agent 간의 정보 교환.
- Application Control Heap
- Application Control Heap : 해당 응용프로그램과 연관된 모든 에이전트 프로세스 사이의 정보를 교환하기 위해 사용되는 영역.
이 영역은 선언된 임시테이블에 대한 Descriptor 정보를 저장하는데도 사용.
명시적으로 삭제되지 않은 선언된 모든 임시테이블에 대한 Descriptor 정보가 보존되므로 선언된 임시테이블이
삭제될때까지 메모리를 반환할 수 없다. 파티션마다 각 연결에 한개씩 할당되며, APP_CTL_HEAP_SZ 변수로 조절한다.
4. Agent Private Memory
: 각 DB2 에이전트 프로세스는 작업을 수행할 메모리를 획득해야 한다. 어플리케이션을 대신하여 Access 게획을 최적화, 구현,
실행하고, Sort를 수행하고, 위치와 상태같은 Cursor 정보를 기록하고, 통계를 모을 메모리를 사용하게 된다.
- 지역 또는 원격 응용프로그램이 데이터베이스에 접속을 요청하는 경우에 할당되고, 접속을 종료하면 해제.
- Sort Heap, Satement Heap, Application Heap, Statistics Heap, Query Heap 등
- Sort Heap : 정렬작업 또는 Hash Join 이 필요할때 할당되고, 작업이 종료되면 메모리 반환, SORTHEAP 변수로 조절.
- Statement Heap : SQL 컴파일러의 작업영역으로 사용되는 메모리. 프리컴파일 또는 바인드 작업시에 각 SQL문에 대해
할당되고, 작업이 종료되면 반환. STMTHEAP 변수로 조절.
- Application Heap : db2agent 프로세스의 개별 작업 영역으로 서브에이전트 프로세스가 SQL문에 대한 패키지 중에서
실행가능한 섹션을 복사하여 저장하는데 사용.
SQL문에 대한 실행섹션은 요청된 SQL문을 수행하기 위해 필요한 정보를 제공하며, 이 메모리 영역에
캐시된 섹션은 재사용되어 오버헤드를 줄일수 있음. APPLHEAPSZ 변수로 조절.
- Statics Heap : 명령어가 실행될때만 Utility Heap으로부터 할당받는 메모리 영역. Runstats 실행시 메모리를 사용
STAT_HEAP_SZ 변수로 조절.
- Query Heap : db2agent 프로세스가 쿼리문, SQLCA, SQLDA, 패키지 등의 이름과 생성자, 섹션번호, 일관성 토큰등을
저장하는데 사용. QUERY_HEAP_SZ 변수로 조절.
[ DB2 메모리모델 - DB2 9 새로운 메모리 기능 ]
1. 단순화된 다중 스레드 아키텍쳐
- DB2 9.5는 모든 플랫폼에 다중 스레드 아키텍쳐가 있다.
9.5 이전 버전에서 유닉스, 리눅스 기반 Db2는 각 에이전트가 각각 고유 프로세스를 실행하는 프로세스 기반 모델을 사용했다.
다중 스레드 아키텍쳐는 Db2의 메모리 Footprint를 줄인다.
2. 모든 플랫폼에서 사용가능한 STMM.
- DB2 9.1에서는 AIX 및 Windows 에서만 전체 데이터베이스 메모리에 대해 database_memory 매개변수를 자동으로 설정하여
STMM을 사용할 수 있었다. 그러나 DB2 9.5에서는 모든 플랫폼에서 사용이 가능하다.
3. 보다 많은 구성 매개변수를 자동으로 설정하여 동적으로 구성할 수 있다.
- 이러한 매개변수에는 applheapsz, database_memory, dbheap, instance_memory, mon_heap_sz, stat_heap_sz, stmtheap 등이 있다.
4. NO_FILE_SYSTEM_CACHING 이 기본이다.
- Db2 9.5에서 테이블스페이스 컨테이너를 만들면 기본적으로 데이터베이스 매니저가 가능한 경우마다 동시 I/O
(CIO : Cuncurrent I/O) 를 사용하려고 시도한다. CIO가 지원되지 않는 시스셈구성의 경우 직접I/O (DIO) 또는 버퍼링된 I/O
(Buffered I/O) 가 대신 사용된다. CIO나 DIO를 설정하면 데이터베이스 매니저가 파일시스템 레벨에서 캐싱을 사용하지
않기 때문에 메모리 성능이 향상된다.
각 메모리세트는 다양한 메모리 풀을 구성하고 있다.
위 그림에서는 메모리풀의 이름이 나열되어 있다. 예를들어 LockList는 데이터베이스 공유메모리 세트에 속한 메모리 풀이다. Private Sort Heap 은 에이전트 개인 메모리 세트에 속한 메모리 풀이다.
5. 64비트 AIX에서의 대형 페이지(16MB) 지원.
- 대형 페이지 사용은 집중적으로 메모리 접근을 필요로 하며 다량의 가상메모리를 사용하는 고성능 어플리케이션에 성능향상을 위해서 제공된다.
6. database_memory 구성 매개 변수의 새로운 값.
- DB2 9 에서 database_memory 구성 매개변수의 COMPUTED 설정은 DB2 8버전에서의 AUTOMATIC 설정과 같다. DB2 9에서 database_memory 매개변수를 AUTOMATIC(AIX 및 Windows의 경우)으로 설정하면 데이터베이스 메모리 사용을 자동으로 튜닝하는 새로운 자가튜닝메모리관리 기능을 이용할 수 있다.
7. 새 구성 매개 변수 db_mem_thresh
- database_memory 매개변수에서 사용되지 않은 부분이 물리적 메모리량을 제어하도록 새로운 데이터베이스 구성매개변수인 db_mem_thresh을 추가해 왔다.
8. Sheapthres_shr 매개변수 변경
- Sheapthres_shr 매개변수는 어떤 한 시점에서Sort 메모리 소비가 총 데이터베이스 공유메모리의 양을 제한하는 것을 의미한다. Db2 8버전에서는 이것이 하드제한(Hard limit) 이었다. 만약 정렬 메모리가 한계에 가까워지면 경고가 발생된다. DB2 9의 Sheapthres_shr 매개변수는 소프트제한(soft limit)이다. 정렬 메모리 힙이 필요한 경우 추가적으로 제한없이 데이터베이스 공유 메모리를 사용할 수 있다.
9. AWE 지원이 사용되지 않음(Windows)
- 64비트 운영체제 이전, DB2 초기버전에서는 가상주소공간을 초과하여 추가적인 물리적 메모리를 사용하기 위해서 32비트 Db2 서버를 사용할 수 있는 AWE기능을 지원했다. 그러나 64비트 플랫폼 도입으로 AWE 기능 사용의 요구가 줄어들게 되었다. 따라서 DB2 9에서는 DB2_AWE 레지스트리 변수와 함께 AWE기능에 대한 지원을 하지 않는다.
댓글 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 |
» | IBM DB2 아키텍쳐 및 프로세스 모델 - 3. DB2 Memory Model | 조인상 | 2010.12.13 | 14751 |
3 | IBM DB2 아키텍쳐 및 프로세스 모델 - 2. DB2 Process Model | 조인상 | 2010.12.07 | 15103 |
2 | IBM DB2 아키텍쳐 및 프로세스 모델 - 1. DB2 Architecture & Engine Components | ischo | 2010.12.06 | 17485 |
1 | IBM DB2 Overview | 조인상 | 2010.11.27 | 9257 |