목록으로
'언젠가 읽기' 컨텐츠는 논문이나 영문 컨텐츠 등 언젠가 읽으려고 즐겨찾기 하고선 읽지 않고 계속 미룰만한 컨텐츠를 읽고 요약하거나 소개합니다.

SQLite 인덱스 시각화: 검색

언젠가 읽기
2025. 2. 10. AM 8:00:42

SQLite Index 검색 시각화

개요

이번 글에서는 SQLite 인덱스 내에서의 검색 과정을 시각화하는 방법을 다룹니다. 이전 포스트에서 인덱스 데이터를 추출하고 시각화하는 방법을 설명했으며, 이번에는 인덱스 내부에서의 검색이 어떻게 이루어지는지를 보여줍니다.

SQLite의 인덱스 내부 검색 방법

SQLite는 각 페이지 내에서 셀 값을 대상으로 이진 검색을 수행합니다. 가장 근접한 값을 찾은 후 해당 셀의 왼쪽 자식을 선택합니다. 만약 페이지 내의 모든 셀 값이 목표 값보다 작다면, 페이지의 오른쪽 자식을 선택하게 됩니다.

쿼리 분석을 위한 EXPLAIN 사용

SQLite를 디버깅 모드로 컴파일하고, 쿼리에 대해 디버깅을 활성화하면 쿼리가 내부적으로 어떻게 동작하는지에 대한 상세한 정보를 얻을 수 있습니다. EXPLAIN 명령어를 사용하면 가상 머신의 OPCODEs와 레지스터 등의 정보를 확인할 수 있습니다.

인덱스 추적을 위한 SQLite 코드 확장

EXPLAIN 출력만으로는 페이지와 셀에 대한 자세한 정보를 얻을 수 없어, 코드를 수정하여 검색 중에 읽힌 모든 페이지와 셀을 추적하는 기능을 추가했습니다. 이를 통해 검색 과정에서 어떤 페이지와 셀이 사용되었는지 상세히 알 수 있습니다.

예제 출력

확장된 기능을 통해 얻은 출력은 다음과 같습니다:
이를 통해 인덱스 검색 과정에서 실제로 어떤 페이지와 셀이 참조되었는지 명확히 확인할 수 있습니다.

참고 자료

  • SQLite Debugging
  • SQLite Opcode 문서
  • SQLite Index 프로젝트 GitHub 저장소