4.1.3 메모리 할당 및 사용구조

박상준·2024년 3월 17일
1

mysql

목록 보기
3/8
post-custom-banner

구조

1. 글로벌 메모리 영역

2. 로컬 메모리 영역

  • 구분
    • MySQL 서버 내에서 다양한 스레드가 공유하여 사용하는 공간인지 여부에 따라 나뉜다.

글로벌 메모리 영역

  • 정의

    • MySQL 서버 전체에서 공유되는 메모리 공간이다.
    • 일반적으로 클라이언트 스레드의 수와 무관하게 하나만 할당
    • 필요에 따라 여러 개의 메모리 공간을 할당받을 수는 있지만, 이러한 공간들은 모든 스레드에 의해 공유됨,
  • 종류

    테이블 캐시

    • DB 엔진이 테이블 접근시 필요한 Metadata 빠르게 제공

      InnoDB버퍼풀

    • InnoDB 스토리지 엔진에서 가장 중요한 메모리 구조.

    • 데이터와 인덱스 페이지를 캐싱

      InnoDB 어댑티브 해시 인덱스

    • 자주 접근하는 데이터에 대해 해시 인덱스를 동적으로 생성, 데이터 접근 시간 단축

      InnoDB 리두 로그 버퍼

    • 트랜잭션의 변경 사항을 임시로 저장하는 공간

    • 시스템 장애 발생시 복구에 사용

로컬 메모리 영역

  • 정의
    • MySQL 서버상에서 각 클라이언트 스레드가 쿼리를 처리하는 데 사용하는 메모리 공간
    • 클라이언트 스레드별로 독립적으로 할당 -> 공유 되지 않는다.
    • 클라이언트가 MySQL 서버에 접속
      • 서버 → 클라이언트 요청을 처리하기 위하여 스레드 할당
      • 해당 스레드를 로컬 메모리 영역 이라고 부름
  • 특징
    • 독립성
      • 다른 스레드와 공유되지 않는다.
    • 조건부 할당
      • 쿼리의 용도에 따라 필요할 때만 할당된다.
    • 지속성
      • 네트워크 버퍼 같은 로컬 메모리 공간은 열려 있는 동안 계속 할당된 상태로 남아있음. (네트워크 버퍼)
      • 일부 (소트버퍼, 조인버퍼) 는 쿼리 실행 시에만 할당되었다가 해제되는 공간임
  • 대표적인 로컬 메모리 영역
    1. 조인 버퍼
      1. 조인 작업 수행시 사용되는 메모리 공간
      2. join_buffer_size 를 통해 크기 조절가능
    2. 바이너리 로그 캐시
      1. 트랜잭션의 변경 사항을 임시로 저장하는 공간
      2. 바이너리 로그에 기록되기 전에 사용됨.
    3. 네트워크 버퍼
      1. 클라이언트와 서버 간의 네트워크 통신에 사용
      2. net_buffer_size 를 통해 크기 조정
profile
이전 블로그 : https://oth3410.tistory.com/
post-custom-banner

0개의 댓글