Oracle 2

[ORACLE] Direct Path Insert

일반적인 Insert가 느린 이유는 데이터를 입력할 수 있는 블록을 Freelist에서 찾는다. (Freelist란? HWM 아래쪽에 있는 블록중 입력이 가능한 블록에 대한 목록) (HWM란? High-Water-Mart. 즉, 테이블 데이터가 쌓여있는 가장 높은 영역) Freelist에서 할당받은 블록을 버퍼캐시에서 찾는다. 버퍼캐시에 없으면, 데이터파일에서 읽어 버퍼캐시에 적재한다. INSERT 내용을 Undo 세그먼트에 기록한다. (Undo란? 트랜젝션을 롤백하기 위해 기록한 정보) INSERT 내용을 Redo 로그에 기록한다. (Redo란? 트랜젝션을 리커버리 하기위한 정보) Direct Path Insert 방식이 빠른 이유는 Freelist를 참조하지 않고 HWM 바깥 영역에 데이터를 순차적으..

[ORACLE] 바인드 변수의 중요성

1. 개요 바인드 변수를 사용하게 되면, 커서를 많이 생성하지 않고 하나를 반복 재사용하므로 메모리 사용량과 파싱 소요시간을 줄여준다.궁극적으로, 시스템 전반의 메모리와 CPU 사용률을 낮춰 데이터베이스 성능과 확장성을 높이는게 기여하고, 특히 동시 사용자 접속이 많을 때는 그 영향력이 절대적이다.아래 간단한 실습을 통해 바인드 변수에 대해 알아보자. 2. 실습 환경 설정 -- 테이블 생성 create table t as select * from all_objects; update t set object_id = rownum; -- 인덱스 생성 create unique index t_idx on t(object_id); -- 통계정보 수집 analyze table t compute statistics; ..