일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 회고
- 월간회고
- 메서드명
- InnoDB 버퍼 풀
- 멀티쓰레드 프로그래밍
- 어댑티브 해시 인덱스
- Blue-Green
- 주간회고
- java
- B+TREE
- 블로그 병행
- 프리코스
- N+1
- SQL 실행순서
- useMutation
- 계층별 구조
- DeleteAll
- 도커
- 카카오 2차 코딩테스트
- 백기선 스터디
- db
- jacoco
- Jenkins
- 우테코
- BalancedTree
- useQuery
- 클래스
- mysql
- 기능별 구조
- ci/cd
- Today
- Total
목록mysql (3)
Haneul's Blog

InnoDB 버퍼 풀이란? InnoDB 버퍼 풀은 InnoDB 스토리지 엔진에서 가장 중요한 부분으로 디스크의 데이터 파일이나 인덱스 정보를 메모리에 캐시해두는 공간입니다. 데이터를 변경하는 쿼리는 데이터 파일 곳곳의 레코드를 변경하기 때문에 랜덤한 디스크 작업을 발생시키지만 버퍼 풀이 이러한 변경된 데이터를 모아서 처리하여 랜덤한 디스크 작업을 줄여주는 역할, 즉 쓰기 지연을 해줍니다. 또한 버퍼 풀은 대량 읽기 조작의 효율성을 위해 여러 행을 보유할 수 있는 페이지로 분할되며 캐리 관리 효율성을 위해링크된 페이지 목록으로 구현됩니다. 거의 사용되지 않는 데이터는 LRU 알고리즘을 사용하여 캐시에서 제거합니다. 이러한 버퍼 풀을 통해 데이터를 메모리에 유지하는 것은 MySQL 튜닝에서 핵심적인 측면입니..

MySQL에서 사용되는 메모리 공간은 크게 글로벌 메모리 영역과 로컬 메모리 영역이 있습니다. 글로벌 메모리 영역과 로컬 메모리 영역은 MySQL 서버 내에 존재하는 많은 스레드가 공유해서 사용하는 공간(글로벌 메모리)인지 아니면 각 스레드 별로 사용하는 공간(로컬 메모리)인지에 따라 나뉩니다. 글로벌 메모리 영역 글로벌 메모리 영역의 메모리 공간은 MySQL 서버가 시작되면서 운영체제로부터 할당되고, 이는 운영체제의 종류에 따라 할당해주는 방법이 다릅니다. 일반적으로 클라이언트 스레드의 수와 무관하게 하나의 메모리 공간만 할당되며, 필요에 따라 메모리 공간을 2개 이상 할당 받을 수 있지만 클라이언트의 스레드 수와는 무관합니다. 그리고 글로벌 영역은 앞에서 말했다시피 공유되는 공간이기 때문에 글로벌 영..

MySQL을 공부하다가 문득 내부적으로는 어떻게 동작하고 있는지 궁금하여 공부하면서 정리해보려고 합니다. MySQL의 실행 구조는 위의 그림과 같다고 할 수 있는데, 서버쪽에서 SQL 요청이 들어오면 쿼리 파서 -> 전처리기 -> 옵티마이저 -> 쿼리 실행기를 거져서 스토리지 엔진으로 통해 실제 디스크에서 데이터를 가져오는 과정을 거칩니다. 각 부분별 역할은 아래 부분에 자세하게 설명하겠습니다. 쿼리파서 쿼리 파서는 사용자 요청으로 들어온 쿼리 문장을 토큰(MySQL이 인식할 수 있는 최소 단위의 어취나 기호)으로 분리하여 B-Tree 형태의 구조로 만드는 역할을 해주고, 기본 문법 오류의 발견 및 오류 메시지를 전달하는 역할도 합니다. 쉽게 정리하자면 SQL을 파싱하고 문법 오류를 검사하는 역할을 한다..