IT기술 289

02 래치 (Latch) 와 락 (Lock)

1. 오라클의 동기화 매커니즘오라클은 거대한 동기화 (Synchronization) 머신이다.래치와 락의 존재 이유는 동시 작업으로부터 오라클의 자원을 보호하는 것이다. 분류 래치 (latch) 락 (lock) 목적 메모리 구조에 대한 배타적인 접근을 위함(9i 부터 cache buffers chains latch 들은 읽기 전용시에 공유가 가능함) 락 모드가 호환 가능하면 다수의 프로세스가 동일한 리소스를 공유하는 것을 허용락 모드가 호환 가능하지 않으면 리소스에 대한 배타적인 접근만 허용 사용범위 SGA 내부의 데이터 구조에만 적용메모리 오브젝트를 임시적으로 보호함단일 오퍼레이션으로 메모리 구조에 대한 접근 제어트랜잭션 단위가 아님 테이블, 데이터 블록 및 state object 와 같은 오브젝트를 ..

IT기술/Oracle 2014.01.27

01 OWI 소개

1. OWI 란?프로세스가 겪는 대기현상을 기록하고 관찰하는 일련의 기능과 인터페이스, 그리고 방법론을 통칭하여 OWI, 즉 Oracle Wait Interface 라고 부른다.프로세스가 특정 자원을 획득하지 못하고 대기하는 것을 "XXX 이벤트를 대기한다" 고 표현한다.이벤트 혹은 대기이벤트는 프로세스가 특정 자원을 획득할 때가지 발생하기를 기다리는 "사건"으로 정의할 수 있다.오라클은 대기회수, 타임아웃회수, 대기시간 이라는 세 가지 값을 이용해 대기현상을 표현한다.사용자 관점에서 가장 의미가 있는 것은 "대기시간" 이다.Response Time = Service Time + Wait TimeService Time 과 Wait Time 을 낮추면 자연스럽게 응답시간이 낮아지고 사용자의 성능 만족도는 ..

IT기술/Oracle 2014.01.27

성능 고도화 2 - 07 병렬 처리

01 기본개념 SQL 문이 수행해야 할 작업 범위를 여러개의 작은 단위로 나누어 여러 프로세스가 동시에 처리하는 것 (1) Query Coordinator 와 병렬 프로세스 Query Coordinator 는 병렬 SQL 문을 발행한 세션을 말하고, 병렬 서버 프로세스는 실제 작업을 수행하는 개별 세션들을 말한다. (2) Infra-Operation Parallelism 과 Inter-Operation Parallelism (3) 테이블 큐 * 생산자 / 소비자 모델 * 병렬 실행계획에서 생산자와 소비자 식별 (4) IN-OUT 오퍼레이션 S → P: PARALLEL_FROM_SERIAL P → S: PARALLEL_TO_SERIAL P → P: PARALLEL_TO_PARALLEL PCWP: PARAL..

IT기술/Oracle 2014.01.23

성능 고도화 2 - 06 파티셔닝

01 테이블 파티셔닝 테이블과 인덱스 데이터를 파티션 단위로 나누어 저장하는 것 * 파티셔닝이 필요한 이유 - 관리적 측면: 파티션 단위 백업, 추가, 삭제, 변경 - 성능적 측면: 파티션 단위 조회 및 DML 수행 클러스터와 다른 점은 세그먼트 단위로 모아서 저장한다는 것. 클러스터는 블록 단위로 데이터를 모아 저장한다. IOT와 파티셔닝을 조합함으로 놀라운 성능 효과를 얻을 수 있다. 테이블 파티션과 인덱스 파티션은 구분돼야 한다. (1) 파티션 기본 구조 * 수동 파티셔닝 뷰틀 통해 파티션 기능을 구현 파티션 뷰의 핵심 기능은 뷰 쿼리에 사용된 조건절에 부합하는 테이블만 읽는다 * 파티션 테이블 파티션 테이블 기능을 이용하면 훨씬 간편하게 파티션을 정의할 수 있을 뿐 아니라 기능적으로 더 낫다 (2..

IT기술/Oracle 2014.01.23

성능 고도화 2 - 05 소트 튜닝

01 소트 수행 원리 (1) 소트 수행 과정 데이터 정렬이 필요할 때 오라클은 PGA 메모리에 Sort Area 를 할당하는데, 그 안에서 처리를 완료할 수 있는지 여부에 따라 소트를 두가지 유형으로 나눈다. 메모리 소트: 전체 데이터의 정렬 작업을 메모리 내에서 완료하는 것을 말하며, Internal Sort 라고도 한다. 디스크 소트: 할당받은 Sort Area 내에서 정렬을 완료하지 못해 디스크 공간까지 사용하는 경우를 말하며, External Sort 라고도 한다. - Optimal 소트: 소트 오퍼레이션이 메모리 내에서만 이루어짐 - Onepass 소트: 정렬 대상 집합이 디스크에 한 번만 쓰임 - Multipass 소트: 정렬 대상 집합이 디스크에 여러 번 쓰임 (2) 소트 오퍼레이션 측정 (..

IT기술/Oracle 2014.01.23

성능 고도화 2 - 04 쿼리 변환

01 쿼리 변환이란? 쿼리 옵티마이저가 SQL 을 분석해 의미적으로 동일하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말한다. 9i 부터 옵티마이저의 핵심적인 변화가 대부분 쿼리 변환을 중심으로 진행되고 있어 이제 SQL 튜닝을 논할 때 빼놓을 수 없는 중심 주제가 되었다. * 쿼리 변환의 종류 1. 서브 쿼리 Unnesting 2. 뷰 Merging 3. 조건절 Pushing 4. 조건절 이행 5. 공통 표현식 제거 6. Outer 조인을 Inner 조인으로 변환 7. 실체화 뷰 쿼리로 재작성 8. Star 변환 9. Outer 조인 뷰에 대한 조인 조건 Pushdown 10. OR-expansion * 쿼리 변환 방식 - 휴리스틱 (Heuristic) 쿼리 변환: 결과만 보장된다면 무조건 ..

IT기술/Oracle 2014.01.22

성능 고도화 2 - 03 옵티마이저 원리

01 옵티마이저 (1) 옵티마이저란? 사용자가 요청한 SQL 을 가장 효율적이고 빠르게 수행할 수 있는 최적의 처리경로를 선택해 주는 DBMS 의 핵심엔진 (2) 규칙기반 옵티마이저 (Rule-Based Optimizer, RBO) 10g 부터는 지원 중단 Heuristic 옵티마이저라 불리며, 미리 정해 놓은 우선순위에 따라 액세스 경로를 평가하고 실행계획을 선택한다. * RBO 규칙 (인덱스 구조, 연산자, 조건절의 형태로 순위 결정) 밑에서부터 대입해본다 1. Single Row by Rowid 2. Single Row by Cluster Join 3. Single Row by Hash Cluster Key with Unique or Primary Key 4. Single Row by Unique ..

IT기술/Oracle 2014.01.22

성능 고도화 1 - 06 I/O 효율화 원리

데이터베이스 성능 튜닝의 3대 핵심 요소는 - 라이브러리 캐시 최적화 - 데이터베이스 Call 최적화 - I/O 효율화 및 버퍼캐시 최적화 가장 중요한 것은 세번째다. 잘 적용하려면 장기간 훈련이 필요하다. I/O 효율화 튜닝을 잘하려면 인덱스원리, 조인원리, 옵티마이저원리에 대한 이해가 필수적이다. 그리고 이를 바탕으로 고급SQL 활용을 통해 문제 해결 경험을 많이 쌓아야만 한다. 01 블록단위 I/O 블록단위로 I/O 한다는 것은, 하나의 레코드에서 하나의 컬럼만을 읽으려 할 때도 레코드가 속한 블록 전체를 읽게 됨을 뜻한다. Sequential 액세스 하나의 블록을 액세스해 그 안에 저장돼 있는 모든 레코드를 순차적으로 읽어들인다면 설령 무거운 디스크 I/O 를 수반하더라도 비효율은 없다. Rand..

IT기술/Oracle 2014.01.21

성능 고도화 1 - 05 데이터베이스 Call 최소화 원리

불필요하고 반복적인 Call 수행횟수를 최소화하는 것은 데이터베이스 수행속도를 향상시키고 확장성을 높이는 매우 중요한, 핵심적인 튜닝 요소다. 01 Call 통계 Parse Call: 커서를 파싱하는 과정에 대한 통계로서, 실행계획을 생성하거나 찾는 과정에 대한 정보를 포함한다. Execute Call: 커서를 실행하는 단계에 대한 통계를 보여준다. Fetch Call: select 문에서 실제 레코드를 읽어 사용자가 요구한 결과집합을 반환하는 과정에 대한 통계를 보여준다. DML 문은 Execute Call 시점에 모든 처리과정을 서버 내에서 완료하고 처리결과만 리턴하므로 Fetch Call이 전혀 발생하지 않는다. select 문은 Execute Call 단계에서는 커서만 오픈하고, 실제 데이터를 처..

IT기술/Oracle 2014.01.21

성능 고도화 1 - 04 라이브러리 캐시 최적화 원리

01 SQL 과 옵티마이저 DBMS 에 명령을 날릴 때 SQL 이라고 하는 구조화된 질의언어를 통해 원하는 결과집합을 요구할 뿐 그 결과집합을 얻기 위한 처리절차를 개발자가 직접 기술하지는 않기 때문에 4세대 언어라고 부른다. SQL 옵티마이저는 최소비용, 최적의 경로를 선택해서 사용자가 원하는 작업을 가장 효율적으로 수행할 수 있는 프로시저를 자동으로 생성해주는 DBMS 의 핵심기능이다. * 옵티마이저의 최적화 수행단계 1. 사용자가 던진 쿼리수행을 위해, 후보군이 될만한 실행계획들을 찾아낸다. 2. 데이터 딕셔너리에 미리 수집해 놓은 오브젝트 통계 및 시스템 통계정보를 이용해 각 실행계획의 예상비용을 산정한다. 3. 각 실행계획의 비용을 비교해서 최소비용을 갖는 하나를 선택한다. SQL 을 파싱하고,..

IT기술/Oracle 2014.01.21