TL;DR
- 데이터베이스 관리 시스템(DBMS)에서 메모리 매핑 파일 입출력(mmap)은 전통적인 버퍼 풀을 대체하기에 적합하지 않으며, 현대 DBMS에서 정확하고 효율적으로 사용하기 어려움.
- mmap은 보조 저장 장치의 파일 내용을 프로그램 주소 공간에 매핑하고, 프로그램이 포인터로 페이지에 접근하면 운영체제(OS)가 필요한 페이지를 적재하고 메모리가 부족할 때 내보내는 기능임.
- mmap의 간편함은 수십 년간 DBMS 개발자들을 끌어들였지만, 즉시 드러나지 않는 심각한 정확성 및 성능 문제가 있음.
- 여러 인기 DBMS가 메모리보다 큰 데이터베이스를 지원하려고 처음에는 mmap을 사용했으나, 숨겨진 문제를 겪은 뒤 상당한 엔지니어링 비용을 들여 파일 입출력을 직접 관리하는 방식으로 전환함.
- 논문은 mmap의 주요 단점을 상세히 다루고 실험으로 명확한 성능 한계를 보인 뒤, DBMS의 파일 입출력에 mmap을 고려할 수 있는 조건을 제시함.
mmap의 작동 방식과 매력
- 메모리 매핑 파일 입출력(mmap)은 보조 저장 장치에 있는 파일 내용을 프로그램의 주소 공간에 매핑하는 운영체제 제공 기능임.
- 프로그램은 파일 전체가 메모리에 있는 것처럼 포인터를 통해 페이지에 접근하며, 운영체제는 프로그램이 페이지를 참조할 때 필요한 페이지를 적재하고 메모리가 가득 차면 자동으로 페이지를 내보냄.
- 이러한 간편함은 수십 년간 DBMS 개발자들에게 버퍼 풀 구현의 대안으로 여겨짐.
DBMS에서 드러나는 문제
- mmap에는 처음부터 명확히 드러나지 않는 심각한 정확성 및 성능 문제가 있음.
- 이러한 문제 때문에 현대 DBMS에서 mmap을 정확하고 효율적으로 사용하는 일은 어렵고, 불가능할 수도 있음.
- 여러 인기 DBMS가 메모리보다 큰 데이터베이스를 지원하려고 mmap을 도입했으나, 숨겨진 위험에 부딪힌 뒤 파일 입출력을 직접 관리하는 방식으로 전환했으며 이 과정에서 상당한 엔지니어링 비용이 발생함.
- mmap과 DBMS의 조합은 커피와 매운 음식처럼, 문제가 뒤늦게 분명해지는 좋지 않은 조합에 비유됨.
실험과 사용 권고
- 새 DBMS에서 mmap을 사용하려는 시도가 계속되는 가운데, 이 논문은 mmap이 전통적인 버퍼 풀을 대체할 적절한 수단이 아니라는 경고를 제시함.
- mmap의 주요 단점을 상세히 설명하고, 실험 분석을 통해 명확한 성능 한계를 보임.
- 분석 결과를 바탕으로 DBMS 개발자가 파일 입출력에 mmap을 고려할 수 있는 경우에 대한 권고를 제시함.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요