Architecture 개요
SGA
SGA(System Global Area)란?
- 공유메모리
- 여러개의 process들이 공유하는 메모리 영역
- 여러개의 process란?
- client 가 붙으면 server process 가 생성되고 , server process는 SGA 영역을 많이 참조한다
- server process는 자신만의 memory 공간도 있다 PGA(Program Global Area)
SGA 영역 종류
- Shared Pool
- 주로 sql에 관한 내용 (sql plan)
- Data Dictionary Cache
- Database Buffer Cache
- Storage 영역에 있는 데이터를 읽을 때 , Buffer cache에 올려놓는다 . (한번 읽은 데이터는 다시 읽을 수 있기에 )
- Redo Log Buffer
- DML 데이터 수정을 할때마다 -> 정합성이 변경되는것이다 .
- ex) 고객명 바꿈 (김땡떙 -> 이땡)
- 들어올때 마다 storage io 를 발생 시키면 성능 하락
- 그래서 , 변경이 되는 부분은 memory에 모아두았다가 한번에 내린다 .
- Large Pool
- 이 외의, SGA에서 큰 object들을 모아둘때
- ex) java pool , parallel query 사용시
Background Process
DBMS가 안정적이게 돌아갈 수 있도록, 여러가지 작업을 진행한다
- smon, pmon
- DBWR
- buffer cache 내용을 안전하게 datafile로 내림
- LGWR
- Redo Log를 storage로 내릴경우
- CKPT
- cheack
- ARCH
- archive log 관리 하는 process
Oracle Connection & Server Peocess
client는 외부서버에서 접속한다
client 들은 connection driver를 통해서 DB에 접속을 한다
그 중 OCI driver은 oracle 에서 만듬었고 코드가 많아 무거움 경향이 있다
명령 수행 시 flow
JDBC diver로 접속했다는 예를 들면,
1. getConnection 시점에서 user process가 생성된다
2. listener 를 호출하여 connection 생성을 요청한다
3. listener는 해당 포트(def : 1521)로 접속하여 DB서버에 server process를 생성시킨다
4. 명령어 수행시 (JDBC 코드에서 createStatement , ExecuteQuery 를 실행) server process는 SGA영역에 있는 데이터라면 SGA 접근하여 user process 에게 전달함
4-1. hash join이나 sorting을 할떄 PGA- server process의 공유 메모리 영역을 사용한다
'DBMS > Oracle' 카테고리의 다른 글
[Oracle] Database Block, Clustering Factor란? (0) | 2024.02.26 |
---|---|
[DBMS] DB성능에 미치는 요소/ scan 방법 간단설명 (0) | 2024.02.25 |
SwingBench(stresstool) 사용하기 - Order Entry 스키마/데이터 생성 및 SwingBench 구동 (oewizard.bat ) (0) | 2024.02.25 |
SwingBench(stresstool) 사용하기 - 1 (디렉터리 살펴보기) (0) | 2024.02.22 |
SwingBench란? Window 에 swingbech(latest)설치 (java 17 설치) (0) | 2024.02.21 |