문서의 선택한 두 판 사이의 차이를 보여줍니다.
다음 판 | 이전 판 | ||
study:oracle:adv_owi_10g:segment_wait_event [2009/08/20 12:13] starlits 새로 만듦 |
study:oracle:adv_owi_10g:segment_wait_event [2009/08/20 14:26] (현재) starlits |
||
---|---|---|---|
줄 2: | 줄 2: | ||
===== enq: HW - connection ===== | ===== enq: HW - connection ===== | ||
+ | |||
+ | ==== 세그먼트 공간관리기법 ==== | ||
+ | |||
+ | ^ FLM \\ (Freelist Management) | ||
+ | ^ ASSM \\ (Automatic Segment Space Management) | ||
+ | |||
+ | === FLM 일 경우, HW락 경합을 줄이는 방법 === | ||
+ | - FREELISTS 값을 동시 트랜잭션의 수를 고려해서 충분히 잡아준다. \\ default 값이 1로 되어 있으므로 꼭 변경해 주어야 한다. | ||
+ | - **_BUMP_HIGHWATER_MARK_COUNT**(하나의 프리리스트당 HWM을 이동하는 크기 결정하는 값) Hidden parameter 값을 크게 설정한다. \\ 예) FREELISTS = 10 이고 _BUMP_HIGHWATER_MARK_COUNT = 20 이면 , 한번에 200블록(10 * 20)만큼 HWM이 이동하게 된다. | ||
+ | - 적절한 크기의 익스텐드를 사용한다. | ||
+ | - 대부분 Extent Management Local Uniform Size 를 5M 정도로 설정할 것을 권고한다. | ||
+ | |||
+ | |||
+ | ==== HW락 ==== | ||
- **HW락** : HWM을 여러 프로세스가 동시에 변경하는 것을 막기 위한 락 | - **HW락** : HWM을 여러 프로세스가 동시에 변경하는 것을 막기 위한 락 | ||
- 대량의 Insert 를 할 경우 (대부분의 경우) | - 대량의 Insert 를 할 경우 (대부분의 경우) | ||
- 대량의 Update 를 할 경우 Undo Segment 에서 HW락 경합현상이 발생하는 경우 | - 대량의 Update 를 할 경우 Undo Segment 에서 HW락 경합현상이 발생하는 경우 | ||
- | - **IMU(In-memory Undo)** : 10g이상부터 추가된 기능으로, | + | - **IMU(In-memory Undo)** : 10g이상부터 추가된 기능으로, |
- Undo Segment 확장에 의한 HW락 경합이 이전 버젼에 비해 줄어드는 효과 | - Undo Segment 확장에 의한 HW락 경합이 이전 버젼에 비해 줄어드는 효과 | ||
- Undo block 을 읽고 쓰는 작업이 줄어들어 시스템 전체의 성능개선효과 | - Undo block 을 읽고 쓰는 작업이 줄어들어 시스템 전체의 성능개선효과 | ||
- 동일한 KTI-UNDO영역을 사용하기 위해 경합이 발생할 경우 latch: in memory undo latch 대기 이벤트가 발생한다. | - 동일한 KTI-UNDO영역을 사용하기 위해 경합이 발생할 경우 latch: in memory undo latch 대기 이벤트가 발생한다. | ||
+ | |||
+ | === HW락 경합을 줄이는 방법 === | ||
+ | - 오라클 9i 이상이면 ASSM을 사용한다. | ||
+ | - 버젼과 무관하게 적절한 크기의 익스텐트를 사용한다. | ||
+ | - 오라클 8i 이상이면 LMT(Locally Managed Tablespace)를 사용한다. | ||
===== enq: ST - contention, enq: TT - contention ===== | ===== enq: ST - contention, enq: TT - contention ===== | ||
+ | === 테이블스페이스 관리 기법 === | ||
+ | ^ 관리기법 ^ UET$(Used Extend) \\ FET$(Free Extent) \\ DML ^ 설명 ^ | ||
+ | ^ DMT \\ (Dictionary Managed Tablespace) | ||
+ | ^ LMT \\ (Locally Managed Tablespace) | ||
+ | |||
+ | |||
+ | === ST락 경합을 줄일 수 있는 세가지 방법 === | ||
+ | |||
+ | - LMT 기능 추가 | ||
+ | - TT락의 사용 확대 | ||
+ | - ST락 : 인스턴스별로 하나만 존재 | ||
+ | - TT락 : 테이블스테이블별로 하나씩 존재 | ||
+ | - Temporary tablespace 도입 | ||
+ | - Permanent Tablespace(영구 테이블스페이스)를 정렬영역으로 사용할 경우 정렬 수행에 따른 과도한 익스텐드의 할당과 해제는 \\ ST락의 경합을 유발하여 큰 성능 저하를 발생시킨다. | ||
+ | - SMON의 정렬영역을 정리하기 위해서 ST락을 대기하는 경우 치명적인 성능저하를 일으킬 수 있다. | ||
+ | - ST락 경합 현상은 오라클 8i 이후로는 거의 이슈가 되지 않는다. | ||
+ | |||
+ | == 오라클 8i 이상으로 업그레이드하고, | ||
===== enq: US - contention ===== | ===== enq: US - contention ===== | ||
+ | |||
+ | === AUM(Automatic Undo Management) 사용시 Undo Segment가 | ||
+ | - 인스턴스 기동 | ||
+ | - **데이타베이스를 OPEN하는 과정**에서 언두 세그먼트를 Online 시킨다. | ||
+ | - Undo Tablespace 를 변경할 때 | ||
+ | - **alter system set undo_tablespace = xxxx** | ||
+ | - 기존 언두 세그먼트 : Offline 된다. | ||
+ | - 신규 언두 세그먼트 : Online 시킨다. | ||
+ | - 트랜잭션의 증가와 감소 | ||
+ | - 트랜잭션 양이 빠른속도로 증가하여 기존 언두 세그먼트만으로 트랜잭션을 감당할 수 없을때 | ||
+ | - 새로운 오프라인 상태의 언두 세그먼트를 온라인화 시키거나 | ||
+ | - 새로운 언두 세그먼트 생성한다. | ||
+ | - 일정 시간 트랜잭션이 없거나 즐어들면 오라클은 언두 세그먼트를 오프라인 시킨다. | ||
+ | |||
+ | === US락 === | ||
+ | - US락 : 언두 세그먼트를 Online/ | ||
+ | - 서버 프로세스는 트랜잭션을 시작하는 시점에 언두 세그먼트를 할당받아야 하는데 \\ 사용 가능한 언두 세그먼트가 존재하지 않을 경우 \\ 언두 세그먼트를 신규로 생성하거나 \\ 오프라인 상태의 언두 세그먼트를 온라인 시켜야 한다. | ||
+ | == 10511 이벤트 == | ||
+ | - 시스템의 속성상 트랜잭션의 변동량이 크고 이로 인해 US락 경합이 계속해서 발생한다면 10511 이벤트를 수행한다. | ||
+ | - 10511 이벤트는 SMON이 언두 세그먼트를 오프라인 시키는 기능을 수행하지 않도록 하는 역할을 한다. |