Innodb 스토리지 엔진은 데이터베이스의 읽기 및 쓰기 성능을 향상시키기 위해 버퍼 풀로 설계되었습니다. 버퍼 풀을 사용합니다:
- 데이터를 읽을 때 데이터가 버퍼 풀에 있으면 클라이언트는 버퍼 풀의 데이터를 직접 읽고, 그렇지 않으면 디스크로 이동하여 다시 읽습니다.
- 데이터를 수정할 때 첫 번째 단계는 버퍼 풀에서 데이터가 있는 페이지를 수정한 다음 더티 페이지로 설정하고 마지막으로 백그라운드 스레드가 더티 페이지를 디스크에 기록하는 것입니다.
버퍼 풀은 얼마나 큰가요?
기본적으로 버퍼 풀의 크기는 128MB이며, innodb_buffer_pool_size 파라미터를 설정하여 버퍼 풀의 크기를 설정할 수 있으며, 일반적으로 물리적 메모리의 60%~80%로 설정하는 것이 좋습니다.
Buffer Pool 캐시 대상
InnoDB는 저장된 데이터를 디스크와 메모리 간의 기본 상호 작용 단위인 페이지로 나누며, 페이지의 기본 크기는 16KB입니다. 따라서 버퍼 풀도 페이지 단위로 나누어야 합니다.
MySQL이 시작되면 InnoDB는 버퍼 풀에 연속적인 메모리를 요청한 다음 기본 크기인 16KB의 페이지로 나누며, 버퍼 풀의 페이지를 캐시된 페이지라고 합니다. 현재 이러한 캐시된 페이지는 무료이며 나중에 애플리케이션이 실행되면 디스크의 페이지가 버퍼 풀에 캐시됩니다. 버퍼 풀에는 "인덱스 페이지" 및 "데이터 페이지" 캐시 외에도 실행 취소 페이지, 삽입 캐시, 적응형 해시 인덱스, 잠금 정보 등이 포함됩니다.





