글로벌 메모리 영역

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

 -테이블 캐시

 -InnoDB 버퍼 풀

 -InnoDB 어탭티브 해시 인덱스

 -InnoDB 리두 로그 버퍼

 

로컬 메모리 영역 

  세션 메모리 영역이라고도 표현하며, MySQL 서버상 존재하는 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모리 영역입니다. 대표적으로 커넥션 버퍼와 정령(소트) 버퍼 등이 있습니다. 클라이언트가 MySQL 서버에 접속하면 MySQL서버에서는 클라이언트 커넥션으로부터의 요청을 처리하기 위해 스레드를 하나씩 할당하게 되는데, 클라이언트 스레드가 사용하는 메모리 공간이라고 해서 클라이언트 메모리영역이라고도 합니다. 클라이언트와 MySQL 서버와의 커넥션을 세션이라고 하기 때문에 로컬 메모리 영역을 세션 메모리 영역이라고도 표현합니다.

로컬 메모리는 각 클라이언트 스레드별로 독립적으로 할당되며 절대 공유되어 사용되지 않는다는 특징이 있습니다. 일반적으로 글로벌 메모리 여역의 크기는 주의해서 설정하지만 소트 버퍼와 같은 로컬 메모리 영역은 크게 신경 쓰지 않고 설정하는데, 최악의 경우(가능성은 희박하지만)에는 MySQL 서버가 메모리 부족으로 멈춰 버릴 수도 있으므로 적절한 메모리 공간을 설정하는 것이 중요합니다.로컬 메모리 공간의 또 한 가지 중요한 특징은 각 쿼리의 용도별로 필요할 때만 공간이 할당되고 필요하지 않은 경우 MySQL이 메모리 공간을 할당조차도 하지 않을 수도 있다는 점입니다. 대표적으로 소트 버퍼나 조인 버퍼와 같은 공간이 그러합니다. 그리고 로컬 메모리 공간은 커넥션이 열려 있는 동안 계속 할당된 상태로 남아 있는 공간도 있고(커넥션 버퍼나 결과 버퍼) 그렇지 않고 쿼리를 실행하는 순간에만 할당했다가 다시 해제하는 공간(소트 버퍼나 조인 버퍼)도 있습니다.

  -정렬 버퍼(Sort buffer)

  -조인 버퍼

  -바이너리 로그 캐시

  -네트워크 버퍼

'스터디 > MySQL' 카테고리의 다른 글

트랜잭션 지원 메타데이터  (0) 2023.02.12
쿼리 실행 구조  (0) 2023.01.29
플러그인 스토리지 엔진 모델  (0) 2023.01.29
MySQL 스레딩 구조  (0) 2023.01.12
MySQL이란?  (0) 2023.01.12

+ Recent posts