buffer pool 은 InnoDB 가 억세스 하는 테이블 및 인덱스 데이터를 캐시하는 메모리 영역이다.
시스템 물리 메모리의 60~80% 정도를 할당 한다.
작업의 효율성을 위해 복수의 행을 보관할 수 있도록 페이지로 나뉘며 링크된 페이지 목록으로 구현된다.
오랫동안 참조되지 않은 페이지는 LRU 알고리즘으로 만료 시킨다.
buffer pool 은 2개의 하위 리스트로 구성된다.
- new sublist
- buffer pool 의 5/8 공간을 차지
- 최근에 참조되면 이 sublist 에 추가 된다.
- old sublist
- buffer pool 의 3/8 공간을 차지
- 참조되지 않을 수록 점차 이 sublist 에 가까워지거나 이동되어 진다.
새로운 page 가 추가될때 이 두개의 sublist 사이로 추가되며 기존의 old sublist 의 페이지는 자동으로 더 age 하게 된다
( age 라 함음 나이를 먹는다는 뜻 , 이는 나이가 너무 많으면 나중에 buffer pool 에서 퇴출된다는 뜻 )
buffer pool optimizing
mysqldump 나 where 절 없는 select, read ahead 의 대량 작업이 buffer pool 에 큰 영향을 줄 수 있고 이를 잘 제어해야 함
- https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-midpoint_insertion.html
- https://dev.mysql.com/doc/refman/8.0/en/innodb-performance-read_ahead.html
buffer pool monitoring
'Database > MySQL' 카테고리의 다른 글
InnoDB Adaptive Hash index (0) | 2021.10.01 |
---|---|
InnoDB change buffer (0) | 2021.10.01 |
InnoDB Locking and Transaction Model (0) | 2021.10.01 |
MySQL shell importTable() 사용하기 (0) | 2021.10.01 |
MySQL shell exportTable() 사용하기 (0) | 2021.10.01 |