Delayed block cleanout의 개념을 이해하려면 우선 오라클에서 사용하는 몇가지 용어에 대해 알아야 한다. Cleanout 또는 block cleanout이란 블록에 설정된 로우 레벨 락을 해제(Cleanout)한다는 의미이다. Cleanout이 발생하면 로우 레벨 락이 해제되고 ITL 정보(SCN, Flag, Lock Byte 등)가 갱신된다. Fast commit이란 커밋 시점에 모든 블록에 대해 cleanout을 수행하지 않는다는 것을 의미한다. 오라클은 성능상의 문제로 변경된 데이터 블록들 중 버퍼 캐시에 올라와 있는 일부 블록들에 대해서만 cleanout을 수행한다. Fast Commit이 발생하는 경우, 변경되는 정보의 량을 최소화하기 위해 ITL 정보에서 Flag와 SCN 정보만..
오라클에서는 대량의 대이터 Insert 가 발생하게 되면 해당 블록을 찾아서 캐시에 올리고 다시 내려쓰는 작업을 해야 하기 때문에 느릴 수 밖에 없다. 그래서 오라클은 미리 리두로그에 기록하게 되는데 이를 선로그기법이라고 하며 빠른 commit 이라고 한다. 사용자는 데이터를 insert 하고 commit 을 하게 되면 데이터파일에는 기록이 되지 않았지만, 리두로그에 모두 기록되어 있으므로 commit 이 완료 될 수 있다. 1. 사용자가 insert 명령을 날림 2. 리두에 기록(선로그) 3. commit 날림 4. 컨트롤파일에 commit SCN 번호 기록됨 (commit 완료) log switch 가 발생시 1. ckpt 가 checkpoint 발생시킴 - DBWn 에게 checkpointSCN 을..
사용 목적 Large Pool 은 필수 메모리 영역은 아니지만 Shared Pool 의 부하를 감소시키는 등 몇가지 성능에 영향을 주기 때문에 지정해서 사용하는 편이 좋다. 1. Shared Server (= MTS : Multi Thread Server) Shared Server 를 사용하면 Server Process 는 UGA (User Global Area)를 Shared Pool에 위치 하고 사용한다. 2. Parallel Processing (병렬 프로세싱) 대용량의 데이터에 Access할 때 성능을 위해 병렬작업을 이용하게 된다. 하나의 SQL을 수행시에 동시에 여러개의 process가 동작하게 되는데 Thread으로 동작하는 프로세스간에 메시지를 이용하여 Thread 동기화를 이뤄낸다. 이 ..
사용시 유의사항 블록 크기에 따른 비교 분석 시나리오 기본적으로 Oracle 에서 사용하는 Block 크기는 8k 이다. 오라클에서는 block 단위로 I/O 발생하게 된다. 하지만 이 기본 사이즈 말고 다른 사이즈의 Block 를 사용하고 싶다면 추가적으로 사용할 크기의 Cache 영역을 확보해야 한다. 즉 아래와 같은 순서로 작업이 진행 되어야 한다. 1. 시스템 파라미터 설정 2. 테이블 스페이스 생성시 BLOCKSIZE 키워드 사용으로 지정 사용시 유의사항 임시 테이블스페이스(Temporary Tablespace)에는 무조건 기본 블록 사이즈를 사용해야 한다. 분할 객체의 경우 모든 분할 영역은 동일한 블록 크기를 가지는 테이블 스페이스에 존재해야 한다. 블록 크기에 따른 비교 분석 블록의 크기..
http://docs.oracle.com/cd/B19306_01/server.102/b14237/initparams157.htm PGA는 각각의 프로세스에서 개별적으로 사용되는 메모리 영역을 말한다. 이 PGA는 크게 아래와 같이 4개로 나누어져 있다. 정렬 공간 : 명시적 또는 묵시적으로 정렬작업이 발생할 때 사용된다. 이 공간에서 정렬작업이 완료된다면 메모리 정렬이라고 하고 작업량이 이 메모리 영역을 넘어설 경우 disk 를 사용하게 된다. 세션 정보 : 유저 프로세스의 세션정보를 저장한다. 커서 상태 정보 : SQL 파싱 정보가 저장되어 있는 주소를 저장한다. 변수 저장 공간 : SQL 문장에서 사용했던 BIND 변수를 저장한다. 9i부터 PGA 메모리 영역의 크기를 auto와 manual 두가지 ..
하나 이상의 Extent가 모여서 segment가 된다. Segment와 Object의 개념을 혼동 할 수 있는데 Object는 더 큰 개념이고 Object 종류 중에서 Segment가 포함된다. 데이터를 저장하고 데이터베이스에서 공간을 차지하는 Object가 바로 Segment이다. Segment 종류 Table Table Partition Cluster index undo Segment Temporary Segment Lob Segment Nested table Bootstrap Segment Segment의 Extent의 할당 및 해제 ([Stoage-2 Extent])