====== PGA(Program Global Areas) ====== ===== 동작원리 ===== - PGA는 하나의 단일 (서버,백그라운드)프로세스에 대한 데이타와 제어정보를 가지고 있는 메모리 공간이다. - PGA는 User Process가 Oracle Database에 접속하고 Session이 생성될때 Oracle에 의해 할당됩니다. - 각 서버프로세스에 하나만 할당되는 PGA메모리 영역은 SGA 영역과는 달리 \\ 다른 프로세스와 공유 되지 않는 **각 프로세스가 독립적으로 사용하는 non-shared 메모리 영역**이다. - PGA_AGGREGATE_TARGET 파라메터를 이용하면 PGA SQL 실행영역을 일일이 설정해 줄 필요없이 이 범위내에서 메모리를 최대한 효율적으로 사용할 수 있다. {{dbms:oracle:concept:pga.jpg|}} ===== Session Memory ===== - Session의 variable, array 정보를 저장한다. ===== Private SQL Areas ===== - Private SQL 영역은 **binding 정보**와 **runtime 정보**를 포함하는 메모리 영역이다. - Private SQL 영역은 Persistent 영역과 Runtime 영역으로 나누어진다. - Private SQL 영역의 할당과 복귀의 많은 부분이 User의 Application에 의존하고, 운영은 User Process와 연관이 있다. - 초기화 파라메터 OPEN_CURSORS는 User Process가 할당할 수 있는 Private SQL 영역을 제한한다. - runtime 영역에는 SQL문을 실행하는 중에 사용하는 정보를 포함하게 되는데, SQL문의 복잡도, 처리해야할 데이터량 등에 따라 이 영역의 크기가 달라진다. - SQL Work Areas 에 포함되는 정보 - Sort-based operators (order by , group by, rollup, windows function) - Hash join - Bitmap merge - Bitmap create