목록ORACLE/SQLP 성능고도화 해법1 3
Code Forest
03. DB Lock(Pin) (01) DB Lock 개요래치를 빨리 놓지 않으면 경합이 발생한다DB 버퍼캐시에서 원하는 버퍼블럭을 찾았다면 가급적 빨리 쥐고 있는 래치를 해제해야 한다.그렇지 않으면 하나의 cache buffers chains 래치에는 여러 개의 해시 체인이 달려 있기 때문에 경합 발생 가능성이 증가하게 된다. 그런데 그 버퍼에 먼저 접근한 선행 프로세스가 아직 버퍼를 사용중이라면 어떻게 해야 할까? 블럭에 대해 작업을 수행하려면 Lock을 얻어야 한다아주 짧은 순간이라도 두 개 이상의 프로세스가 동시에 버퍼내용을 읽고 쓴다면 데이터 정합성에 문제가 생길 수 있기 때문에,캐시된 버퍼 블럭을 읽거나 변경하려는 프로세스는 먼저 버퍼헤더에서 버퍼 Lock을 획득해야 한다. 버퍼 Lock은 프..
02. DB 버퍼캐시빠른 입출력을 위해 사용되는 부분은 SGA캐시영역 내에 있는 DB버퍼캐시이며,데이터를 쓰거나 읽을 때 반드시 경유되는 영역이다.DB버퍼캐시에는 다음과 같은 4가지 특징이 있다. (01) 블럭단위 I/O일부 컬럼기반 DBMS를 제외한 대부분의 DBMS는 블럭단위로 데이터를 처리한다.블럭단위로 데이터를 처리한다는 것은 블럭내의 한 레코드만 갱신하거나 읽더라도,해당 레코드가 속한 블럭 전체를 읽어야 함을 뜻한다. 가령 수많은 레코드를 읽더라도, 이 레코드 집합이 한 블럭내에 존재한다면한 레코드를 읽었을 때와 비교해도 읽기비용만큼은 같다는 것을 의미한다. 이것은 SQL의 SELECT구문 성능이 읽어야하는 레코드 수가 아닌 읽어야하는 블럭 수로 좌우됨을 의미하고,데이터베이스 I/O 튜닝을 이해..
01. 기본 아키텍쳐 (01) 기본 아키텍쳐 오라클의 기본 아키텍쳐를 간단히 표현하면 다음과 같다. 디스크에 저장된 데이터 집합 (데이터베이스)SGA(System Global Area) 공유 캐시 메모리 영역디스크와 SGA를 액세스하는 프로세스특히 SGA와 프로세스 집합을 합쳐 인스턴스(Instance)라고 부르며,SGA는 여러 프로세스가 동시에 액세스 할 수 있기 때문에, SGA의 자료구조를 보호하고 접근요청을 직렬화하는 래치(Latch)와저장된 자료를 보호하기 위한 락(Lock)이 필요하다. 위의 그림은 오라클 인스턴스를 간략히 표현한 것 인데,그림에서 볼 수 있듯이 프로세스는 다시 서버 프로세스와 백그라운드 프로세스로 나눌 수 있다. 서버 프로세스는 클라이언트를 위한 다음과 같은 일련의 서비스를 제..