ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 메모리 할당 및 사용 구조
    Technique/RDBMS 2016. 5. 16. 22:11
    반응형


    글로벌 메모리 영역의 모든 메모리 공간은 MySQL 서버가 시작되면서 무조건 운영체제로부터 할당 된다.

    운영체제의 종류에 따라 다르겠지만 요청된 메모리 공간을 100% 할당해줄 수도 있고, 그 공간 만큼 예약해두고 필요할 때 조금씩 할당해주는 경우도 있다.


    글로벌 메모리 영역과 로컬 메모리 영역의 차이는 MySQL 서버 내에 존재하는 많은 스레드가 공유해서 사용하는 공간인지 아닌지에 따라 구분된다.


    글로벌 메모리 영역

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


    로컬 메모리 영역

    세션 메모리 영역이라고도 표현하며 MySQL 서버상에 존재하는 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모리 영역이다. 대표적으로 커넥션 버퍼와 정렬 버퍼가 있다.

    클라이언트가 MySQL 서버에 접속하면 MySQL 서버에서는 클라이언트 커넥션으로부터의 요청을 처리하기 위해 스레드를 하나씩 할당하게 되는데, 클라이언트 스레드가 사용하는 메모리 공간이라고 해서 클라이언트 메모리 영역이라고도 한다. 

    클라이언트와 MySQL 서버와의 커넥션을 세션이라고 하기 때문에 로컬 메모리 영역을 세션 메모리 영역이라고도 표현한다.


    각 클라이언트 스레드별로 독립적으로 할당되며, 절대 공유되어 사용되지 않는다는 특징이 있다. 일반적으로 글로벌 메모리 영역의 크기는 주의해서 설정하지만 소트 버퍼와 같은 로컬 메모리 영역은 크게 신경쓰지 않고 설정하는데, 최악의 경우에는 MySQL 서버가 메모리 부족으로 멈춰 버릴 수도 있으므려 적절한 메모리 공간을 설정하는 것이 중요하다.

    각 쿼리의 용도별로 필요할 때 만 공간이 할당되고 필요하지 않은 경우에는 MySQL이 메모리 공간을 할당조차 하지 않을 수도 있다는 점이 있다.

    로컬 메모리 공간은 커넥션이 열려 있는 동안 계속 할당된 상태로 남아 있는 공간도 있고, 그렇지 않고 쿼리를 실행하는 순간에만 할당했다가 다시 해제 하는 공간도 있다.

    반응형

    'Technique > RDBMS' 카테고리의 다른 글

    복제 ( Replication )  (0) 2016.05.17
    플러그인 스토리지 엔진 모델  (0) 2016.05.16
    MySQL 스레딩 구조  (0) 2016.05.16
    MySQL 아키텍처  (0) 2016.05.16
    MySQL InnoDB storage  (0) 2016.04.10

    댓글

Designed by Tistory.