- 사용자의 세션이 하나 붙으면 한 개의 프로세스로 1:1로 붙어서 처리함
- SQL이 느린데.. 더 이상 튜닝을 할 여지가 없는 경우 parallel을 사용하는 방법이 있음
- 하나의 SQL 실행을 위해서 여러개의 프로세스를 띄어서 하나의 작업을 나누어서 처리해서 빠르게 함
- 여러 프로세스 결과 취합을 위해 Query Coordinator라는 게 있음 (QC)
- 여러 프로세스가 처리한 내용을 QC에 보내서 최종 결과를 반환함
- 쓰는 방법 : select /*+ parallel(4) */ count(*) from emplyee;
→ 4개의 프로세스를 띄어서 해당 SQL을 처리함
- DML 병렬처리도 가능함 : enable_parallel_dml 을 hint에 추가 필요
- 병렬처리는 작업은 빨리지는데, 자원을 많이 사용함
- 여러개 띄워서 동시 수행해서 cpu, memory를 더 많이 사용
- OLTP같은 온라인 프로그램에 parallel을 쓰면 안됨
- 여러 사람이 쓰는 온라인 프로그램에 parallel이 쓰면 더 많은 자원을 사용해서 시스템이 느려짐 (cpu, memory과다 사용)
- 새벽에 도는 일부 배치 프로그램, DW에만 사용
- CTAS SQL에 parallel을 넣으면, CTAS로 생성된 테이블의 degree속성에 parallel 값이 들어감
→ parallel hint를 안줘도 parallel로 수행됨
* degree : table의 병렬 처리방식을 지정
'DATABASE > oracle' 카테고리의 다른 글
Oracle 메모리 (undo, redo, archive) (0) | 2023.06.04 |
---|---|
[Oracle] 9. REDO와 UNDO (0) | 2021.07.23 |
[Oracle] 3. 캐시와 공유 메모리 (0) | 2021.07.12 |
[Oracle] 2. 오라클의 여러 프로세스 (0) | 2021.07.12 |
[Oracle] 1. I/O와 디스크의 관계 (0) | 2021.07.12 |