현재 진행하는 프로젝트에서 검색 기능을 지원하기 위해 fulltext index를 사용중이다. 세 개의 컬럼에 fulltext index를 걸어주고 있고, n-gram size도 1로 설정했기 때문에, 인덱스 용량을 고려해보면 좋겠다고 생각했다. 인덱스 크기를 고려해야 하는 이유 중 하나가 버퍼풀 cache miss로 인한 disk i/o 과다 발생이라는 것을 알게 됐고, 해당 내용을 중심으로 검색 기능을 개선한 과정을 정리해봤다. 이 글의 모든 내용은 MySQL innodb 엔진 기준으로 설명할 것이다. 📍 디스크 I/O 데이터베이스의 데이터들은 디스크에 영속화된다. 그런데 디스크에 존재하는 데이터에 접근하는 시간은 메모리에 접근하는 시간에 비해 매우 느리다. 만약 HDD에 접근한다 하면 ..