O/S 레벨의 캐시 및 버퍼링
- 모든 O/S는 Application과 Hardware 중간에서 버퍼링 작업을 수행함
- Linux에서도 동일하게 InnoDB 엔진에서 파일을 기록하거나 읽는 도중 O/S 레벨의 버퍼링 또는 캐시 처리를 함
- O/S의 캐시나 버퍼링도 시스템 메모리를 사용함
- InnoDB의 경우, 읽어들이는 모든 페이지들에 대해서 O/S보다 지능화된 버퍼링을 수행함
- O/S에서도 캐시를 하고 InnoDB Buffer pool에서도 캐시가 되는 경우 이중으로 버퍼링 됨 (Double buffering)
- O/S 캐시의 장점
- Write cache가 없는 경우 빠른 Flush 처리가 가능 - O/S 캐시의 단점
- Double buffering으로 인한 물리적 메모리 소비 -> DB장비의 경우 꽤 많은 공간을 점유하는 듯 보임 - 결론적으로 RAID 컨트롤러에 Write cache가 붙어있고, 그 Write cache가 Battery backed unit(BBU)이 있으면
빠른 Flush 처리와 함께 데이터 손실을 막을 수 있음 - 이 경우에는 O/S의 Cache/Buffering을 피하고 Direct I/O를 할 수 있도록 설정함이 좋음
- innodb_flush_method=O_DIRECT 설정으로 InnoDB 엔진에서 발생하는 모든 I/O 작업을
Direct I/O (O/S의 Cache/Buffer를 거치지 않는)를 유도할 수 있음
댓글 없음:
댓글 쓰기