IT기술/Oracle 119

성능 고도화 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

성능 고도화 1 - 03 오라클 성능관리

※ SQL 튜닝 과정 쿼리 성능에 문제가 생기면 Explain Plan 을 통해 실행계획 을 먼저 확인 (X-ray ) 한다. 그것만으로 문제점을 정확히 파악할 수 없을 때 AutoTrace 를 걸어 수행 시 실제 일량을 측정 (CT촬영) 하거나 SQL 트레이스 (MRI 촬영) 를 걸어 내부 수행 절차상 어느 단계에서 부하를 일으키는지 눈으로 확인한다. 문제점이 파악되면 쿼리를 변환하거나 옵티마이저 힌트를 사용해 튜닝 (외용약 또는 내복약 처방) 을 실시하고, 그것만으로 부족하다 판단되면 인덱스 조정 (칼을 대지 않는 시술) 을 병행한다. 그래도 성능에 만족하지 못하면 반정규화를 실시하거나 집계 테이블을 생성 (칼을 대는 절개 수술) 하도록 권고하지만 구조적 문제에 기인할 때만 사용하는 최후의 수단이다...

IT기술/Oracle 2014.01.21

성능 고도화 1 - 02 트랜잭션과 Lock

DB2, SQLServer, Sybase 등은 Lock을 통해 읽기 일관성을 구현하지만, 오라클은 Undo 데이터를 이용해 읽기 일관성을 구현한다. Undo 에 저장된 정보를 이용해 쿼리가 시작된 시점을 기준으로 일관성 있는 결과집합을 생성해낸다. 01 트랜잭션 동시성 제어 (1) 동시성 제어 다중 사용자 환경에서 발생할 수 있는 갖가지 동시성 문제에 대한 충분한 고려 없이 시스템 개발이 이루어지는 문제 동시성 제어란 동시에 실행되는 트랜잭션 수를 최대화하면서도 입력, 수정, 삭제 검색 시 데이터의 무결성이 유지될 수 있도록 노력하는 것 동시성 (Concurrency): 다중 사용자가 같은 데이터를 동시에 액세스 일관성 (Consistency): 자신이 발생시킨 변경 사항과 다른 트랜잭션의 변경사항을 포..

IT기술/Oracle 2014.01.21

성능 고도화 2 - 02 조인 원리와 활용

01 Nested Loops 조인 (1) 기본 메커니즘 (2) 힌트를 이용해 NL 조인을 제어하는 방법 ordered 힌트는 from 절에 기술된 순서대로 조인하라고 옵티마이저에게 지시할 때 사용 use_nl 힌트는 NL 방식으로 조인하라고 지시할 때 사용 10g 부터는 leading 힌트에 2개이상 테이블을 기술할 수 있도록 기능이 개선돼, from 절을 바꾸지않고도 마음껏 순서를 제어할 수 있게 되었다. (3) NL 조인 수행 과정 분석 실행계획을 해석할 때, 형제 노드 간에는 위에서 아래로, 부모 자식 노드 간에는 안쪽에서 바깥쪽으로 자식노드부터 읽는다. 각 단계를 완료하고 나서 다음 단계로 넘어가는게 아니라 한 레코드씩 순차적으로 진행한다. 단, order by 는 전체 집합을 대상으로 정렬해야 ..

IT기술/Oracle 2014.01.21

성능 고도화 2 - 01 인덱스 원리와 활용

01 인덱스 구조 (1) 범위 스캔 인덱스: 대용량 테이블에서 필요한 데이터만 빠르고 효율적으로 액세스할 목적으로 사용하는 오브젝트 범위스캔 (Range Scan): 인덱스는 키 컬럼 순으로 정렬돼 있기 때문에 특정 위치에서 스캔을 시작해 검색 조건에 일치 하지 않는 값을 만나는 순간 멈출 수 있다. (2) 인덱스 기본 구조 Root 를 포함한 Branch 블록에 저장된 엔트리에는 하위 노드 블록을 찾아가기 위한 DBA (Data Block Address) 정보를 갖고, 최말단 Leaf 블록에는 인덱스 키 컬럼과 함께 해당 테이블 레코드를 찾아가기 위한 ROWID (주소정보) 를 갖는다. * 리프 노드상의 인덱스 레코드와 테이블 레코드 간에는 1:1 관계 * 리프 노드상의 키 값과 테이블 레코드 키 값은..

IT기술/Oracle 2014.01.20

관리실무 총정리

01 Oracle Architecture1. DBMS 와 Oracle 이야기메모리에서 작업하고 디스크에 저장한다. 2. Oracle Server 의 전체 구조 살펴보기(1) Oracle Server 전체 구조인스턴스 (Instance) - 메모리 부분에 생성되는구조1) SGA (System Global Area) - Shared Pool (Library Cache, Data Dictionary Cache), Data Buffer Cache, Redo Log Buffer, Large Pool, Java Pool, Streams Pool, Fixed SGA2) Backgroud Process - DBWR, LGWR, PMON, SMON, CKPT, ETC데이터베이스 - Data files, Control f..

IT기술/Oracle 2014.01.17

백업복구 총정리

01 No Archive log mode 와 Archive log modeno archive log mode - redo log file 을 덮어쓰는 경우archive log mode - online redo log file 을 손실없이 지키는 방법 Archive log 를 만드는 시점은 log switch 가 발생하면 즉시 archiving 작업이 시작되며 이 작업을 하는 백그라운드 프로세스가 archiver(arch) 이다. 주의사항1. 별도의 저장공간 필요하다.2. 공간이 가득 찰 경우 DB가 중단된다.3. 관리가 까다롭다. archive redo log mode 로 변경하기DB 종료 → Parameter File 수정 → DB Mount 로 시작 → Mode 변경 → DB OpenSQL> shut..

IT기술/Oracle 2014.01.17

01 튜닝 방법론 및 SQL 처리 구조

1. SQL 튜닝을 위한 선결 과제(물리적인 환경)1) 업무에 적당한 H/W(시스템 설계자)구현될 업무가 운영되기에 충분한 용량의 서버 용량 산정 및 환경 구축CPU, Memory, Network 등2) 오라클 서버 튜닝(데이터베이스 관리자)SQL 특성에 맞도록 오라클 서버튜닝데이터 베이스 메모리 및 I/O 튜닝3) 운영 체제 튜닝(운영 체제 관리자)오라클 서버가 운용되는 데 필요한 기본적인 리소스 파라미터 튜닝 (설계 중의 과제)4) 업무 기능 분석(업무 분석가)목표로 하는 업무의 범위 선정명확한 업무 분석 및 설계5) 데이터 모델 설계(설계자)업무를 가장 잘 표현하는 단순 명료한 데이터 모델 필요- 명확한 업무 분석이 선결 과제- 업무의 범위의 명확한 구분 2. SQL 튜닝 기술이 필요한 사람1) 설..

IT기술/Oracle 2014.01.15

성능 고도화 1 - 01 오라클 아키텍처

DBMS 내부 아키텍처와 SQL 옵티마이저의 원리를 이해하지 않고서는 고성능의 DB 애플리케이션을 구축하기 어렵다. 01 기본 아키텍처 SGA 는 많은 프로세스가 동시에 데이터를 액세스 하기 때문에 사용자 데이터를 보호하는 Lock 은 물론 공유 메모리 영역인 SGA 상에 위치한 데이터 구조에 대한 액세스를 직렬화 하기 위한 LOCK 매커니즘 (Latch) 도 필요해진다. 오라클 접속 과정 1. 연결 요청 사용자 → LISTENER 2. 프로세스 생성 연결 요청 상속 LISTENER → SERVER 3. 메모리 생성 SERVER → PGA 4. RESEND 패킷 전송 SERVER → 사용자 5. 연결 사용자 → SERVER 리스너에 연결 요청을 하는 순간 하나의 프로세스를 띄우고 PGA 메모리를 할당한다..

IT기술/Oracle 2014.01.14