일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
Tags
- SQL
- 파이썬 소스
- 알고리즘
- 백준 알고리즘
- auto configure
- 자바 프로젝트
- 학점
- 유사코드
- K6
- 파이썬
- 프로젝트
- dynamic query
- gradle
- resilience4j
- smart cast
- c#
- 오라클
- 티스토리
- 자바
- hyperledger
- MongoDB
- JVM
- 오라클 디비
- 리눅스
- oracle
- jsp
- 초대장
- 문법 정리
- 운영체제
- spring
Archives
- Today
- Total
모종닷컴
MySQL 스레딩 구조 본문
반응형
MySQL 스레딩 구조
MySQL 서버는 프로세스 기반이 아닌 스레드 기반으로 동작한다. 그리고 이 스레드는 크게 포그라운드 스레드와 백그라운드 스레드로 나뉜다. 41개의 백그라운드 스레드와 3개의 포그라운드 스레드로 총 44개의 스레드가 실행중이다.
위는 MySQL 서버가 전통적으로 가지고 있는 스레드 모델이며, 서버의 설정이나 어떤 에디션을 사용하는지에 따라 다를 수 있다.
포그라운드 스레드 = 클라이언트 스레드
- MySQL 서버에 접속된 클라이언트의 수만큼 존재하며 클라이언트 사용자가 요청하는 쿼리 문을 처리
- 사용자가 작업을 마치고 커넥션을 종료하면 해당 커넥션을 담당하던 스레드는 스레드 캐시로 되돌아간다
- 스레드 캐시에 일정 개수 이상의 대기 중인 스레드가 있으면 스레드 캐시에 넣지 않고 스레드를 종료
- 포그라운드 스레드는 데이터를 MySQL의 데이터 버퍼나 캐시로부터 가져오며, 버퍼나 캐시에 없는 경우에는 직접 디스크의 데이터나 인덱스 파일로부터 데이터를 읽어와서 작업을 처리
- InnoDB 테이블은 데이터 버퍼나 캐시까지만 포그라운드 스레드가 처리하고, 나머지 버퍼로부터 디스크까지 기록하는 작업은 백그라운드 스레드가 처리
백그라운드 스레드
InnoDB에서는 여러 가지 작업이 백그라운드로 처리된다.
- Insert Buffer를 병합하는 스레드
- 로그를 디스크로 기록하는 스레드
- InnoDB 버퍼 풀의 데이터를 디스크에 기록하는 스레드
- 데이터를 버퍼로 읽어 오는 스레드
- 잠금이나 데드락을 모니터링하는 스레드
InnoDB 에서 데이터를 읽는 작업은 주로 포그라운드 스레드에서 처리한다.
사용자의 요청을 처리하는 도중 데이터의 쓰기 작업은 지연(버퍼링)되어 처리될 수 있지만 데이터 읽기 작업은 절대 지연될 수 없다. 그래서 쓰기 작업을 버퍼링해서 일괄 처리한다 따라서 INSERT, UPDATE, DELETE 쿼리는 데이터가 변경되는 경우 데이터가 디스크의 데이터 파일로 완전히 저장될 때까지 기다리지 않아도 된다.
반응형
'Programming > 데이터베이스' 카테고리의 다른 글
MySQL 플러그인 스토리지 엔진 모델 (0) | 2022.07.23 |
---|---|
MySQL 메모리 할당 및 사용 구조 (0) | 2022.07.22 |
MySQL 아키텍처 (0) | 2022.07.19 |
N+1 Selects 문제 (0) | 2018.11.13 |
마이바티스 - insert할 때 주의사항 (3) | 2018.11.13 |