MySQL, MariaDB

MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조

SungWookKang 2015. 7. 16. 12:54
반응형

MySQL/MariaDB 아키텍처 – 메모리 할당 및 사용 구조

 

  • Version : Mariadb 5.5.4.2-WinX64

 

MySQL/MariaDB 메모리 공간은 크게 글로벌 메모리 영역과 로컬 메모리 영역으로 구분할 수 있다. 글로벌 메모리 영역은 MySQL 서버가 시작되면서 무조건 운영체제로부터 할당된다. 글로벌 메모리 영역과 로컬 메모리 영역의 차이는 MySQL서버 내에 존재하는 스레드가 공유해서 사용하는 공간인지 아닌지에 따라 구분된다.

 

  • MySQL/MariaDB Memory 관련 설정 변수 : http://sqlmvp.kr/220365937569
  • MySQL 서버의 메모리사용량 = (글로벌 메모리) + (각 클라이언트 스레드 사용 메모리)

 

[글로벌 메모리 영역]

일반적으로 클라이언트 스레드의 수와 무관하게 하나의 메모리 공간이 할당된다. 필요에 따라서 2개 이상의 메모리 공간을 할당 받을 수도 있다. 생성된 글로벌 메모리 영역이 N개라도 모든 스레드에 의해 공유된다.

 

 

[로컬 메모리 영역]

세션 메모리 영역이라고 표현하며 MySQL 서버상에 존재하는 클라이언트 스레드가 쿼리를 처리하는데 사용하는 메모리 영역이다. 클라이언트 스레드가 사용하는 메모리 공간이라고 해서 클라이언트 메모리 영역 또는 세션 메모리 영역이라고도 한다.

로컬 메모리는 각 클라이언트 스레드별로 독립적으로 할당되며 절대 공유되어 사용되지 않는다. 각 쿼리의 용도별로 필요할 때만 공간이 할당되고 필요하지 않을때는 MySQL이 메모리 공간을 할당하지 않을 수도 있다(대표적으로 소트 버퍼, 조인 버퍼 등). 로컬 메모리 공간은 커넥션이 열려있는 동안 계속 할당된 상태로 남아 있는 공간도 있고(커넥션 버퍼, 결과 버퍼), 쿼리를 실행하는 순간에만 할당했다가 다시 해제하는 공간(소트 버퍼나 조인 버퍼)도 있다.

 

[참고자료]

RealMySQL (위키북스)

 

 

2015-06-29 / 강성욱 / http://sqlmvp.kr

 

 

MariaDB, MySQL, MySQL 아키텍처, MariaDB 아키텍처, MySQL 메모리 할당, MariaDB 메모리 할당, MySQL 글로벌 메모리, MySQL 클라이언트 메모리

반응형