일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
- 우테코
- useQuery
- InnoDB 버퍼 풀
- SQL 실행순서
- DeleteAll
- 회고
- 주간회고
- Jenkins
- mysql
- 메서드명
- 카카오 2차 코딩테스트
- 계층별 구조
- 도커
- 백기선 스터디
- 기능별 구조
- B+TREE
- jacoco
- 멀티쓰레드 프로그래밍
- 블로그 병행
- N+1
- java
- ci/cd
- db
- useMutation
- 어댑티브 해시 인덱스
- Blue-Green
- 클래스
- 프리코스
- 월간회고
- BalancedTree
- Today
- Total
Haneul's Blog
[DB] MySQL 메모리 할당 및 사용 구조 본문
MySQL에서 사용되는 메모리 공간은 크게 글로벌 메모리 영역과 로컬 메모리 영역이 있습니다.
글로벌 메모리 영역과 로컬 메모리 영역은 MySQL 서버 내에 존재하는 많은 스레드가 공유해서 사용하는 공간(글로벌 메모리)인지 아니면 각 스레드 별로 사용하는 공간(로컬 메모리)인지에 따라 나뉩니다.
글로벌 메모리 영역
글로벌 메모리 영역의 메모리 공간은 MySQL 서버가 시작되면서 운영체제로부터 할당되고, 이는 운영체제의 종류에 따라 할당해주는 방법이 다릅니다.
일반적으로 클라이언트 스레드의 수와 무관하게 하나의 메모리 공간만 할당되며, 필요에 따라 메모리 공간을 2개 이상 할당 받을 수 있지만 클라이언트의 스레드 수와는 무관합니다. 그리고 글로벌 영역은 앞에서 말했다시피 공유되는 공간이기 때문에 글로벌 영역이 N개라 하더라도 모든 스레드에 의해 공유됩니다.
대표적인 글로벌 메모리 영역은 테이블 캐시, InnoDB 버퍼 풀, InnoDB 어댑티브 해시 인덱스, InnoDB 리두 로그 버퍼가 있습니다.
로컬 메모리 영역
로컬 메모리 영역은 MySQL 서버상에 존재하는 클라이언트 쿼리를 처리하는데 사용하는 영역입니다.
클라이언트가 MySQL 서버에 접속하면 MySQL 서버에서는 클라이언트 커넥션으로부터 요청을 처리하기 위해서 스레드를 하나씩 할당하게 되는데, 클라이언트와 MySQL 서버와의 커넥션을 세션이라고 하기 때문에 세션 메모리 영역이라고도 표현합니다.
로컬 메모리는 각 클라이언트 스레드별로 독립적으로 할당되며 절대 공유되어 사용되지 않는다는 특징이 있습니다.
일반적으로 글로벌 메모리 영역의 크기는 주의해서 설정하지만 소트 버퍼와 같은 로컬 메모리 영역은 크게 신경쓰지 않고 설정하는 경우가 대부분입니다. 따라서 최악의 경우에는 MySQL 서버가 메모리 부족으로 멈출 수 있어 적절한 메모리 공간을 설정하는 것도 중요합니다.
로컬 메모리 공간의 또 한가지 중요한 특징은 각 쿼리의 용도별로 필요할 때만 공간이 할당되고 필요하지 않은 경우에는 MySQL이 메모리 공간을 할당조차 하지 않을 수 있습니다.
대표적인 로컬 메모리 영역은 대표적으로 정렬 버퍼, 조인 버퍼, 바이너리 로그 캐시, 네트워크 버퍼가 있습니다.
글로벌 메모리 영역과 로컬 메모리 영역에 해당하는 메모리 영역들에 대한 내용들은 여기에서 다루기에는 내용이 방대하기 때문에 따로 다룬 후에 이 곳에 링크를 남기겠습니다.
정리한 링크 목록
InnoDB 버퍼 풀 정리
https://haneulss.tistory.com/39
[DB] InnoDB 버퍼 풀
InnoDB 버퍼 풀이란? InnoDB 버퍼 풀은 InnoDB 스토리지 엔진에서 가장 중요한 부분으로 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해두는 공간입니다. 데이터를 변경하는 쿼리는 데이터
haneulss.tistory.com
InnoDB 어댑티브 해시 인덱스 정리
https://haneulss.tistory.com/40
[DB] InnoDB 어댑티브 해시 인덱스
InnoDB 어댑티브 해시 인덱스를 알아보기 전에 MySQL에서 데이터를 접근할 때 사용하는 방법에 대해서 간단하게 설명하고 넘어가겠습니다. MySQL에서의 데이터 접근 방식 MySQL의 InnoDB 대표적인 인덱
haneulss.tistory.com
'DB' 카테고리의 다른 글
[DB] SELECT 쿼리 문법 및 실행 순서 (0) | 2022.11.04 |
---|---|
[DB] InnoDB 어댑티브 해시 인덱스 (0) | 2022.11.02 |
[DB] InnoDB 버퍼 풀 (0) | 2022.11.01 |
[DB] WAL(Write-Ahead-Logging) (0) | 2022.10.15 |
[DB] MySQL의 실행 구조 (0) | 2022.10.14 |