-
[SQL] SGA란?프로그램/SQL 2024. 6. 11. 00:31
| SGA(System Global Area)란?
- 데이터베이스에서 사용되는 공유 메모리 영역
- 여러 프로세스가 공유하여 사용하며, 데이터베이스 운영에 필요한 데이터를 저장하고 관리
- 찾으려는 자료가 저장되어 있는 경우, 즉 적합한 캐시가 있는 경우 프로세스의 I/O 입출력을 줄여 성능을 높일 수 있음
| SGA 동작 원리(단순 윈리)
SGA는 공유 메모리로 여러 프로세스(실행중인 프로그램)들이 정보를 공유한다고 보시면 쉽습니다. 이러한 SGA를 간단한 예를 통해 설명 드리며, 실제 복잡한 동작에 비해 많이 생략되었음을 말씀드립니다.
- 통로가 좁아 DB에 입장할 수 있는 사람은 1명으로 제한되어 있으며, A(정보 1,2,3을 원함)와 B(정보 2,3,4를 원함)가 DB에서 정보를 찾아서 나오고 싶어합니다.
- A는 DB에 들어가기 전 SGA에서 정보를 찾습니다.
- SGA에 찾고자하는 정보가 없어, DB에 들어가 정보 1, 2, 3을 찾아서 나옵니다.
- A는 가져온 정보들을 SGA에 기록하고 떠납니다.
- B는 A가 나오고 SGA에서 정보를 찾습니다.
- SGA에 정보 2와 3이 있는 것을 확인하고, DB에 들어가 정보 4를 찾아서 나옵니다.
- B는 SGA에 정보 4를 기록하고 떠납니다.
이 외에도 SQL문을 저장하거나, DB 객체 정의, 변경 사항 등을 SGA에 저장해 효율을 높입니다.
| SGA 구조
위에서 살펴본 정보는 SGA 중 DB Buffer Cache 영역에 저장되는 내용으로, SGA를 이루는 구조는 크게 'DB Buffer Cache', 'Redo Log Buffer', 'Shared Pool' 세 가지로 설명하겠습니다. 각 영역만 해도 별도의 여러 개의 포스팅이 필요할 정도로 내용이 많으나, SGA에 초점을 맞추어 간단히 설명하도록 하겠습니다.
<SGA 구조> '프로그램 > SQL' 카테고리의 다른 글
[SQL] Oracle Process란?(+Instance) (0) 2024.07.31 [SQL] Process와 I/O가 SQL 속도에 미치는 영향 (0) 2024.06.18 [SQL] 데이터베이스 저장 구조 (0) 2024.05.28 [SQL] Function vs Procedure (0) 2024.05.28 [MySQL] SELECT 1000행 제한 해제 (0) 2024.03.11