인프런 커뮤니티 질문&답변
서버 프로세스의 i/o 접근 방법?
작성
·
178
0
안녕하세요.
강의를 듣는 중 질문이 생겨 문의 남깁니다.
서버 프로세스에서 COnventional Path I/O를 사용할지
Direct Path I/O를 사용하지 결정은
SQL 쿼리에서 하는건가요?
아니면 같은 SQL쿼리라도 시스템이 알아서 판단하고 선택하는 건가요?
퀴즈
오라클 메모리 구조 중, 여러 서버 프로세스가 함께 사용하는 공유 메모리 영역은 무엇일까요?
PGA (Program Global Area)
UGA (User Global Area)
SGA (System Global Area)
Stack Space
답변 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 사용시.
감사합니다.





감사합니다!