CHAPTER 5 인덱싱 #4
Replies: 3 comments 1 reply
-
2주차 스터디 정리궁금했던 점
|
Beta Was this translation helpful? Give feedback.
-
내용 정리느낀점 정리
아쉬 웠던 부분책에 전반적인 설명이 너무 빙빙 돌려서 설명하는 부분이 많음, 이미 해당 개념 or 비슷한 개념을 이해하고 있다면 대충 이해가 되지만 사전적인 지식이 없는 경우는 다소 이해가 어려운 부분들이 있음 특히 인덱스에 대한 설명인 부분이 결국 B-Tree 구조 특성상 구조적인 문제로 장/단점 및 한계점이 명확하게 있는데 이 부분을 B-Tree에 대한 설명 없이 계속 진행 하려고 하니 글이 전반적으로 이해가 안되는 부분들이 있다고 생각함 루트 노드를 기준으로 브랜치 노드 또 브랜치 노드에서 리프 노드 등으로 상위 노드를 갖는 구조로 B-Tree 인덱스는 구성됨 리트 노드는 실제 디스크에 있는 레코드 주소를 가지고 있고, 이때 데이터 파일에 접근이 필요한 경우 디스크 I/O가 발생함, 몽고 디비같은 경우는 모르겠지만 mysql 케이스 경우 인덱스외에 필드들을 가져오지 않는다면 리프노드 데이터만으로도 해결이 가능한 것으로 알고 있음 다중 컬럼 인덱스도 결국 B-Tree 구조의 적인 이슈로 이해 해야한다. 첫 번째 칼럼을 기준으로 이미 정렬되어 있고 그 뒤에 추가 칼럼으로 정렬되는 형식이다. 그렇다면 세 번째도 결국 두 번쨰를 정렬한 이후 또 정렬하는 구조로 된다. 이 부분을 선행적으로 알고있지 않았다면 책의 설명으로는 너무 부족해서 이해하기 어려워 보임. 결과적으로 order by 쿼리는 특정 조건의 경우 성능적인 많은 손해를 볼수 있음, 데이터에 순서가 중요하지 않다면 명시적으로 정렬을 제외시키는 것이 훨씬 효율적으로 쿼리될 수 있음 레인지 인덱스의 경우도 케이스 A는 "dept_no = 'd002' and emp_no >= 1014"인 레코드를 찾고, 그 이후에는 dept_no가 d002가 아닐 때까지 인덱스를 그냥 쭉 읽기만 하면 된다. 이 경우에는 읽은 레코드가 모두 사용자가 원하는 결과임을 알 수 있다. 즉 5건의 레코드를 찾는 데 필요한 5번의 비교 작업만 수행 가능한 것이다. 이런 구조 떄문에 not, not in 등등의 비교 검색이 = 비교 방식에 비해서 인덱스 속도가 느릴 수 밖에 없다. 인덱스 생성에 따른 컬렉션에 락 발생과, 이런 부분들이 없어서 조금은 아쉬움 리얼 몽고 디비에는 꽤 자세히 나와 있어서 해당 책도 읽어 보는게 좋을거 같음. 그래도 처음 입문할때 빠르게 살펴보는 용도로는 좋은 책으로 생각됨 |
Beta Was this translation helpful? Give feedback.
-
정리[1] 인덱스 소개explain 함수
[Q] executionStats 모드일 경우에 어떤게 다른가?
인덱스 생성
복합 인덱스
커버드 쿼리
[2] explain
[3] mongoDB 인덱스 종류와 관리고유 인덱스
인덱스 정보 확인
|
Beta Was this translation helpful? Give feedback.
-
CHAPTER 5 인덱싱
Beta Was this translation helpful? Give feedback.
All reactions