2009년 4월 26일 일요일

InnoDB 버퍼(buffer)

○InnoDB buffer pool 

InnoDB의 레코드, 인덱스등을 캐쉬하는 메모리 영역을 말한다. 
한개의 MySQL서버당 한개의 영역이 할당되어 페이지(16KB)단위로 관리된다. 

이 버퍼사이즈는 innodb_buffer_pool_size옵션으로 지정가능하다. 
많이 할당하면 디스크 액세스가 줄어드므로 가능한한 크게 할당한다. 
이 버퍼의  dirty 페이지(갱신된 페이지)가 innodb_max_dirty_pages_pct(%)에 설정된 수치에 도달하면 (표준은 90%), 체크포인트가 동작하기 시작한다.  

또, 버퍼의 dirty 부분이 로그 영역 사이즈(REDO로그 파일참조)에 가까워지면 체크포인트가 동작한다.  체크포인트가 동작하면 테이블스페이스에 쓰여진다. 

만약 데이터가 버퍼에 담어지지 않는다면 LRU(Least Recently Used) 알고리즘을 사용해서 디스크에 쓰여진다.