데이터베이스 : 디스크에 저장된 데이터집합(Datafile, Redo Log File, Control File 등)인스턴스 : SGA 공유 메모리 영역과 이를 액세스하는 프로세스 집합기본적으로 하나의 인스턴스가 하나의 데이터베이스만 액세스한다.RAC(Real Appli
1. SQL 처리과정 SQL 파싱 라이브러리 캐시 : 시스템 공유 메모리에서 SQL과 실행계획이 캐싱되는 영역 SQL 파싱 과정 1) 파싱 트리 생성 : SQL문을 이루는 개별 구성 요소를 분석해서 파싱 트리 생성 2) Syntax 체크 : 문법적 오류가 없는지 확
Oracle을 포함한 모든 DBMS에서 I/O는 블록 단위로 이루어진다.디스크 I/O : 디스크의 액세스 암이 움직이면서 헤드를 통해 데이터를 읽고 쓴다. 메모리 I/O : 전기적 신호메모리는 물리적으로 한정된 자원이므로, 결국 디스크 I/O를 최소화하고 버퍼 캐시 효
데이터베이스 Call 종류 SQL 커서에 대한 작업 요청에 따른 구분 Parse Call : SQL 파싱을 요청하는 Call Execute Call : SQL 실행을 요청하는 Call Fetch Call : SELECT문의 결과 데이터 전송을 요청하는 Call Cal
같은 자원을 액세스하려는 다중 트랜잭션 환경에서 데이터베이스의 일관성과 무결성을 유지하기 위해 필요한 직렬화 장치공유 Lock: 데이터를 읽고자 할 때 사용한다.공유 Lock과는 호환되지만 배타적 Lock과는 호환되지 않는다.(공유 Lock이 설정된 리소스에 다른 트랜
트랜잭션(Transaction) : 업무 처리를 위한 논리적인 작업 단위원자성 (Atomicity) : 트랜잭션은 더이상 분해가 불가능한 업무의 최소단위이므로, 전부 처리되거나 아예 하나도 처리되지 않아야 한다.일관성 (Consistency) : 하나의 트랜잭션을 성공
동시성 제어(Concurrency Control)란 동시에 작동하는 다중 트랜잭션의 상호 간섭 작용에서 데이터베이스를 보호할 수 있어야 함을 의미한다. 동시성을 높이려고 Lock의 사용을 최소화하면 일관성을 유지하기 어렵고, 일관성을 높이려고 Lock을 적극적으로 사용
쿼리 변환(Query Transformation)은 옵티마이저가 SQL을 분석해 의미적으로 동일하면서도 더 나은 성능이 기대되는 형태로 재작성하는 것을 말한다. 이는 Query Transformer가 담당한다. 휴리스틱 쿼리 변환 : 결과만 보장된다면 무조건 쿼리 변
인덱스 기본 가장 일반적으로 B\*Tree 인덱스 구조를 사용한다. 인덱스 깊이 : 루프에서 리프 블록까지의 거리. 반복적으로 탐색 시 성능에 영향을 미친다. 루트, 브랜치 블록 : 각 하위 노드들의 데이터 값 범위를 나타내는 키값과 그 키값에 해당하는 블록을 찾는데
인덱스 튜닝 기초 범위 스캔이 불가능하거나 인덱스 사용이 아예 불가능한 경우 인덱스 선두 컬럼을 조건절에서 가공하면 (FBI 인덱스를 정의하지 않는 한) 정상적으로 인덱스를 사용할 수 없다. FBI 인덱스 : 함수 기반 인덱스. 컬럼을 가공한 형태로 인덱스 생성하기
Nested Loop Join 조인의 기본은 NL 조인이다. NL 조인은 인덱스를 이용한 조인으로 이를 정확하게 이해하고 나면 다른 조인 방식도 쉽게 이해할 수 있다. 예를 하나 들어보자. 이 쿼리 수행 과정을 생각했을 때 가장 쉽게 생각할 수 있는 방식은 사원 테
데이터베이스 Call을 반복적으로 일으키는 프로그램을 One-SQL로 통합했을 때 얻는 성능개선 효과는 매우 극적이다. 하나의 업무에 대해서이렇게 쿼리를 작성하면 같은 테이블을 여러 번 접근해야 한다는 점에서 효율적이지 못하다.이렇게 CASE문을 활용한다면 복잡한 처리
소트와 성능 메모리 소트와 디스크 소트 SQL 수행 도중 Sort 오퍼레이션이 필요할 때마다 DBMS는 정해진 메모리 공간에 Sort Area를 할당하고 정렬을 수행한다. Oracle은 소트 영역을 PGA 영역에 할당한다. Sort 오퍼레이션도 메모리 공간이 부족할
인덱스 유지 비용 테이블 데이터를 변경하면 관련된 인덱스에도 변경이 발생한다. 변경할 인덱스 레코드를 찾아가는 비용에 Redo, Undo를 생성하는 비용까지 더해지므로 인덱스 개수가 많을수록 DML 성능이 나빠진다. Update 수행 시 테이블 레코드는 직접 변경하지
파티션 개요 파티셔닝(Partitioning)은 테이블 또는 인덱스 데이터를 파티션(Partition) 단위로 나누어 저장하는 것을 말한다. 테이블을 파티셔닝하면 파티션 키에 따라 물리적으로는 별도의 세그먼트에 데이터를 저장하며, 인덱스도 마찬가지다. 관리적 측면 :
배치 프로그램 튜닝 개요 배치(Batch) 프로그램 배치 프로그램이란, 일련의 작업들을 하나의 작업 단위로 묶어 연속적으로 일괄 처리하는 것을 말한다. 온라인 프로그램에서도 여러 작업을 묶어 처리하는 경우가 있으므로 이와 구분하려면 한 가지 특징을 더 추가해야 하는데,