mysql - 스레드, 메모리

참치돌고래·2023년 2월 21일
0

MySQL

목록 보기
1/1
post-custom-banner

스레드

1. 포그라운드 스레드 (클라이언트 스레드)

포그라운드 스레드의 최소 수 : MySQL 서버에 접속된 클라이언트 수만큼 존재

클라이언트 사용자가 작업을 마치고 커넉센열 종료하면 해당 커넥션을 담당하던 스레드는 Thread cache 로 돌아간다.
Thread cache 에 이미 일정 개수 이상의 스레드가 대기 중이라면
스레드 캐시에 넣지않고 스레드를 종료시킨다.
포그라운드 스레드는 데이터를 MySQL의 데이터 버퍼나 캐시로부터 가져온다. 버퍼나 캐시에 없는 경우에는 직접 디스크의 데이터나 인덱스 파일로부터 데이터를 읽어온다.
InnoDB 테이블은 데이터 버퍼, 캐시까지만 포그라운드 스레드가 처리. 나머지 버퍼로부터 디스크까지 기록하는 작업은 백그라운드 스레드가 처리한다.

사용자 스레드 = 포그라운드 스레드

2. 백그라운드 스레드

  • Insert Buffer 를 병합하는 스레드
  • 로그를 디스크로 기록하는 스레드
  • InnoDB 버퍼 풀의 데이터를 디스크에 기록하는 스레드
  • 데이터를 버퍼로 읽어 오는 스레드
  • 잠금이나 데드락을 모니터링하는 스레드

메모리

1. 글로벌 메모리 영역

클라이언트 스레드의 수와 무관하게 하나의 메모리 공간만 할당. 모든 스레드에 의해 공유

  • 테이블 캐시
  • InnoDB 버퍼풀
  • InnoDB 어댑티드 해시 인덱스
  • InnoDB 리두 로그 버퍼

2.로컬 메모리 영역

클라이언트 스레드가 쿼리를 처리하는데 사용하는 메모리 영역 (커넥션 버퍼, 정렬 버퍼)

로컬 메모리는 각 클라이언트 스레드별로 독립적으로 할당되며 절대 공유되어 사용되지 않는다는 특징
각 쿼리의 용도별로 필요할 때만 공간이 할당되고 필요하지 않은 경우에는 MySQL이 메모리 공간을 할당조차도 하지않을 수 있다.

  • 정렬 버퍼
  • 조인 버퍼 (쿼리가 실행되는 순간만 메모리 할당)
  • 바이너리 로그 캐시
  • 네트워크 버퍼 (커넥션이 열려 있으면 메모리 계속 할당)
profile
안녕하세요
post-custom-banner

0개의 댓글