작성
·
159
0
안녕하세요.
강의를 듣는 중 질문이 생겨 문의 남깁니다.
서버 프로세스에서 COnventional Path I/O를 사용할지
Direct Path I/O를 사용하지 결정은
SQL 쿼리에서 하는건가요?
아니면 같은 SQL쿼리라도 시스템이 알아서 판단하고 선택하는 건가요?
답변 1
1
안녕하십니까,
일반적으로 Direct path I/O를 수행하는 유형이 있는데, 보통은 시스템이 알아서 해줍니다만 SQL에 Hint 절을 이용해서 Direct path I/O를 해줄 수도 있습니다.
1. 아래와 같이 Insert 절에 append hint 를 사용하면 buffer pool에 insert시 사용한 block을 올리지 않고 direct path i/o를 수행합니다.
Insert /*+ append */ into table_a select * from tab_b;
대부분은 Oracle DBMS가 Direct path I/O를 자동적으로 결정합니다.
1. 대용량의 테이블 Full scan시
- 테이블을 full scan한다고 무조건 Direct path i/o를 수행하지는 않지만 오라클이 실행 계획 수립 시 여러 사항들을 조합하여 direct path i/o를 결정합니다.
2. Parallel Query 수행시에는 무조건 Direct Path I/O 입니다.
3. SQL에서 sorting(ordrer by), group by등으로 temporary 성 segmentation을 read/write할 시 Direct path I/O
4. export/import 또는 sql*loader에서 direct_io option 사용시.
감사합니다.
감사합니다!