MySQL System Architecture - 2. Memory
Overall
MySQL 서버에서 사용하는 메모리 구조는 크게 2가지로 분류할 수 있다.
1.글로벌 메모리 영역(Shaerd Memory)
- MySQL 내 모든 쓰레드들이 사용하는 공유 메모리 영역
- MySQL 서버가 시작될때 OS에 의해 할당 되며, 설정 변경 시 재기동이 필요
2.세션 메모리 영역(Local Memory)
- Foreground Thread 마다 할당되는 메모리
- 쓰레드 마다 할당되는 메모리로 커넥션 갯수와 연계하여 설정필요
- Query를 수행하는 시점에서 할당됐다고 해제되는 메모리 영역이 존재
글로벌 메모리 영역
Buffer Pool
- 각 세션들이 사용할 데이터들을 디스크에서 가져와 저장하는 영역
- Data, Index, Lock ,Ditionary를 보관
- PostgreSQL에서의 Shared Buffer의 역할 ( 오라클은 Buffer Cache)
- 통상 물리메모리의 50%를 할당
Change buffer
- DML 작업시 사용되는 메모리 영역
- 기존에는 Insert 내역만 기록하여서 Insert Buffer로도 불림(5.5 버전이하)
- PK 이외의 다른 인덱스 들의 레코드 값을 보관하는 장소로, 인덱스에 대한 작업 성능 향상을 목적으로 함
- Buffer Pool에 해당 데이터가 존재 하지 않으며, 인덱스 변경 시 많은 리소스를 포함하므로 해당 영역을 통해 개선
Log buffers
- ACID(그중 A,D)를 보장하기 위한 Write ahed loging을 위한 영역으로 트랜잭션에 대한 변경 내역을 캐싱하는 메모리 영역
- Log Thread에 의해 디스크로 flush 되며 해당 WAL 파일은 복구 목적/으로 사용됨
- fsync와 같은 옵션이 항상 수행되므로 부하를 많이 가질 수 있음
Table Cache
- 테이블을 읽고 쓰는데 부하를 감소시키기 위해 오픈된 테이블의 정보를 캐싱하는 메모리 영역
- MySQL에서 테이블을 읽고 쓰기 위해서는 테이블을 열어야 한다하고 한다. 해당 작업은 부하를 가지고 있어 캐시를 통해 관리
- Table_open_cache 파라미터를 통해 조절이 가능함
세션 메모리 영역
Sort Buffer
- MySQL에서 인덱스를 이용한 정렬이 불가 할 경우, 정렬이 필요할 경우 할당되어 사용되는 메모리 영역
- PostgreSQL에서 work_mem 역할
- 정렬이 수행되고 쿼리 수행이 완료되면 바로 시스템에 반환됨
Join Buffer
- MySQL 특성상 NL, Hash Join을 수행하는데 Driven 조인컬럼에 적절한 인덱스가 존재 하지 않아 Join이 수행될 경우 사용되는 메모리 영역
- PostgreSQL에서 work_mem 역할
- 여러개의 테이블을 Join 할 경우 여러개의 Join Buffer가 할당 될 수 있으며 쿼리 수행이 완료되면 시스템이 반환됨
Connection Buffer
- Thread 가 생성될 때 마다 생성되는 메모리 영역
Binlog Cache
- Binary log를 디스크에 바로 쓰지 않고 특정 방식으로 분류된 변경사항을 캐싱하는 메모리 영역
- Replication 구성 또는 시점 복구를 위해 사용되는 로그를 Binlog 라고로 하며 DB 변경사항을 바이너리 방식으로 기록
- Binary Log 포맷은 Statement , Row, Mixed 방식으로 지정할 수 있음
(그림 출처 및 참고 자료)
https://blog.ex-em.com/1682?category=1010730
Real MySQL 8.0내 있는 그림자료
'MySQL & MariaDB' 카테고리의 다른 글
MySQL GTID 복제 환경에서 Reset Master/Reset Slave 명령어 (0) | 2022.12.27 |
---|---|
MySQL Multi Source Replication(MSR) 실습 (0) | 2022.12.26 |
MySQL GTID Replication 실습 (0) | 2022.12.22 |
[Real MySQL 8.0] 02. 설치와 설정 & 03. 사용자 및 권한 (0) | 2022.10.06 |
MySQL System Architecture - 1. Process/Thread (0) | 2022.07.06 |