DBMS MySQL - SQL8-2: 인덱스 내부 동작 원리

 MySQL의 클러스트형과 보조형 인덱스는 균형트리로 만들어집니다. 이는 자료구조 내용에서 나오는 데이터 구조 입니다. 


사진1) 균형트리 구조

 사진1의 균형트리 구조가 나무를 거꾸루 세온 것이라고 할수 있습니다. 위쪽은 시작지점인 뿌리가 있고 다음 중간이 있고 다음 잎은 피라미드처럼 넓어 집니다. 


그럼 간단하게 균형트리에 대해서 표로 그려보도록 하겠습니다.


사진2) 균형트리 구조(표)


 사진2에서는 3단계로 균형트리를 구성하였습니다. 가장 위쪽에는 100, 200, 300이 있고 그 밑으로 숫자가 규칙적으로 나열되 있는 것을 알수 있습니다. 이때 저는 232의 숫자 데이터를 알고 싶습니다. 이때 MySQL에서 어떤식으로 검색하는지 알아보겠습니다.


사진3) 루트에서 200선택

 처음 232의 데이터를 찾을때 루트에서 3개의 선택지가 있습니다. 그런데 232 > 200 AND 232 < 300이기 때문에 200 페이지에 있다는 것을 알수 있습니다.


사진4) 중간에서 225 선택

이제 중간도 마찬가지로 232 > 225 AND 232 < 250이기 때문에 232페이지를 선택합니다. 

사진5) 232조회 완료

 이제 225페이지에서 순서대로 조회하면 232를 찾을수 있습니다. 만약 인덱스를 사용하지 않으면 100번부터 232번까지 133번을 조회해야 하지만 균형트리 구조를 사용하면 4번만에 찾을수 있습니다. 균형트리는 조회하는데 속도에 도움을 많이 주지만 INSERT, DELETE, UPDATE할시 성능에 악영향을 줄수 있습니다. 


악영향에 대해서는 다음 글에서 설명 드리도록 하겠습니다.


이전글 : DBMS MySQL - SQL8-1: 인덱스 개념

이후글 : DBMS MySQL - SQL8-3: 인덱스 사용시 악영향(INSERT, UPDATE, DELETE)








댓글

이 블로그의 인기 게시물

Lesson 12_1 프로퍼티 노드(Property Node)

DAQ로 전압 측정하기-2

Lesson 12_2 참조를 이용한 프로퍼티노드(Property Node)