DB/MySQL

MySQL 메모리 구조

행운개발자 2024. 1. 28. 17:09
728x90

MySQL의 메모리는 크게 글로벌 메모리와 로컬 메모리 영역으로 나뉜다. 글로벌 메모리 영역은 MySQL 서버가 시작되면서 운영체제로부터 할당을 받는다. 처음부터 요청한 100%를 받는지, 상황에 따라서 조금씩 더 할당받는지는 운영체제의 정책에 따라 다른데, 결론적으로 시스템 변수에 설정해 둔 만큼 운영체제로부터 메모리를 할당받는다고 생각하면 된다. 글로벌 메모리 영역은 모든 쓰레드에 의해서 공유된다. 클라이언트 쓰레드(Foreground)의 수와 상관없다. (InnoDB 버퍼 풀, 리두(redo) 로그 버퍼 등을 위해서 사용되는데, 개인적으로는 당장은 그 역할이 와닿지 않는 메모리 영역이다.)

 

로컬 메모리 영역, 클라이언트 메모리 영역, 세션 메모리 영역으로 불리는 메모리 영역은 클라이언트 커넥션으로부터 요청을 처리하기 위해 쓰레드마다 하나씩 할당된다. 이 로컬 메모리 영역은 각 클라이언트 쓰레드 별로 독립적으로 할당되며 절대 공유되어 사용되지 않는다. 로컬 메모리 영역은 정렬과 조인 등을 위해 사용된다. 아무리 많은 사용자의 요청을 동시에 처리해도 각 요청에 대한 데이터가 섞여서 조회되는 일은 없다.

728x90

'DB > MySQL' 카테고리의 다른 글

MySQL의 락  (0) 2024.03.18
MySQL 쿼리 실행 구조  (0) 2024.01.28
MySQL 멀티 쓰레딩  (0) 2024.01.28
MySQL 아키텍처  (0) 2024.01.28
MySQL 시스템 변수 조회 및 변경  (0) 2024.01.28