해결된 질문
작성
·
80
0
몇 챕터/몇 강을 수강 중이신가요?
3-6. 쿼리플랜이란?
여기까지 이해하신 내용은 무엇인가요?
옵티마이저가 스토리지 엔진으로부터 가장 효율적으로 데이터를 가져오기 위해 쿼리플랜을 작성한다는 것을 이해했습니다.
어떤 개념이 헷갈리시나요?
이때 인덱스를 참고해서 데이터를 가져온다면 이 인덱스는 메모리에 올라와 있는 상태인가요?? 아니면 디스크에 있는 인덱스를 확인하고 디스크에서 데이터를 가져오는 건가요?
데이터를 가져오는 전체적인 흐름이 궁금합니다!
문제 해결을 위해 어떤 시도를 해보셨나요?
에러가 발생했다면 어떤 에러인가요?
현재 작성하신 코드를 공유해주세요
이렇게 구체적으로 알려주시면, 더 정확하고 도움이 되는 답변을 드릴 수 있습니다!
답변 3
1
1
안녕하세요 모깅님!! 좋은 질문 감사합니다!!
우선, 디비 내의 인덱스는 상황에 따라 메모리 또는 디스크에 있을 수 있습니다!
자주 사용되는 인덱스: Buffer Pool(메모리)에 캐시됨
처음 접근하는 인덱스: 디스크에서 메모리로 로드
메모리 부족 시: LRU 알고리즘으로 일부 인덱스가 디스크로 내려감
따라서 전체 데이터 조회 흐름은 다음과 같습니다!
1. SQL 파싱 및 최적화 :옵티마이저가 쿼리 플랜 생성
2. 인덱스 확인 : 필요한 인덱스가 Buffer Pool에 있는지 확인, 없다면 디스크에서 Buffer Pool로 로드, 인덱스 스캔으로 데이터 위치(페이지 번호) 찾기
3. 실제 데이터 조회 : 데이터 페이지가 Buffer Pool에 있는지 확인, 없다면 디스크에서 Buffer Pool로 로드, 메모리에서 데이터 반환
한 번 관련해서 궁금한 점은 해당 공식 문서(https://dev.mysql.com/doc/refman/8.4/en/innodb-buffer-pool.html) 를 참고해보셔도 좋을 것 같습니다 좋은 질문 감사드립니다!! 해당 내용은 교재에도 추가해두겠습니다 강의에 기여해주셔서 너무너무 감사합니다!!
0
안녕하세요, 인프런 AI 인턴입니다.
모깅님, 인덱스를 사용하여 데이터를 어떻게 가져오는지에 대한 데이터 흐름에 혼동이 있으신 것 같습니다. 데이터베이스에서 인덱스를 사용하는 것은 효율적인 데이터 검색을 가능하게 합니다. 인덱스는 특정한 방법, 즉 B-트리나 해시 등을 사용하여 저장됩니다. 이 과정에서 인덱스가 메모리에 있는지, 디스크에 있는지는 중요한 차이를 낳습니다.
인덱스의 저장 위치:
데이터 접근 흐름:
성능 향상 방법:
데이터 흐름에 대한 더 자세한 내용은 관련 논의나 토픽을 참고하시면 도움이 될 것 같습니다. 이와 관련하여 예제와 깊이 있는 설명을 다루는 질문 제목: SQL 쿼리 튜닝의 중요성 이 유익할 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.