index의 종류

 

  • RDBMS에서 index의 종류는 크게 Clustered 와 Non-Clustered 로 나뉩니다.




Clustered Index란?

 

  • Clustered는 군집화 라는 뜻을 가집니다. 즉, Clustered Index는 군집화된 인덱스로서 데이터와 인덱스를 합쳐놓은 인덱스를 Clustered Index라고 합니다.

 

  • Clustered Index는 사전에서 가나다 순으로 찾기 좋게 정렬되어 있고, 책의 모서리에 ㄱ, ㄴ ,ㄷ 표시를 확인하여 접근하는 방식과 유사합니다.




Clustered Index 작동 방식과 특징

 

 

  • Clustered Index를 만들면 위 그림에서와 같이 루트 페이제에 각 Index 값과 리프 페이지의 위치 정보에 해당하는 첫 번째 데이터를 맵핑시켜 저장합니다.

 

  • 데이터 페이지는 Clustered Index를 기준으로 항시 자동 정렬됩니다.

 

  • 데이터 페이지를 리프 페이지로 사용합니다.

 

  • 한 테이블에 한 개씩만 만들 수 있습니다.

 

  • MySQL에서는 Primary Key가 있다면 Clustered Index로 지정되며, Primary Key가 없다면 unique하면서 not null인 컬럼을 Clustered Index로 하며 이것도 없다면 보이지 않는 컬럼을 만들어 Clustered Index로 지정합니다.




Clustered Index 장점

 

  • 데이터 자체가 Clustered Index를 기준으로 정렬되어 있으며, 리프 페이지가 곧 접근하고자 하는 데이터이기 때문에 인덱스를 위한 추가적인 저장 공간을 사용할 필요가 없습니다.

 

  • Non-Clustered Index보다 Index를 통한 검색 속도가 빠릅니다.

 




Clustered Index 단점

 

  • 데이터 페이지는 Clustered Index를 기준으로 정렬되기 때문에 기존에 많은 데이터가 추가된 테이블에 Clustered Index를 지정하면 DB에 많은 부하가 발생됩니다.

 

  • Non-Clustered Index보다 Index를 통한 검색 속도가 빠르지만, 입력/수정/삭제는 상대적으로 더 느립니다.




Non-Clustered Index란?

 

  • Non-Clustered Index는 보조 인덱스로서 <목차> 또는 <찾아보기>를 통해서 페이지 넘버를 확인하고 접근하는 방식과 유사합니다.




Non-Clustered Index 작동 방식

 

 

  • Non-Clustered Index 역시 루트 페이지가 만들어집니다. 하지만, Clustered Index 처럼 리프 페이지가 데이터 페이지인 것과는 달리 리프 페이지에 index 값과 데이터 페이지에서 몇 번째 위치에 Index인지에 대한 대한 정보를 맵핑하여 저장합니다.

 

  • Non-Clustered Index는 index와 위치 정보를 맵핑한 테이블 데이터가 필요하기 때문에 추가적인 저장 공간이 필요합니다.

 

  • 데이터 페이지는 정렬하지 않고 리프 페이지에 있는 Index를 기준으로 정렬합니다.

 

  • 데이터 페이지에는 직접적인 영향을 주지 않기 때문에 Clustered Index 달리 여러개 생성이 가능합니다.




Non-Clustered Index 장점

 

  • Clustered Index보다 Index를 통한 검색 속도가 느리지만, 입력/수정/삭제는 상대적으로 더 빠릅니다.

 

  • 입력/수정/삭제 시 데이터 페이지가 아닌 리프 페이지만을 정렬 시키기 때문에 Clustered Index보다 DB에 주는 부하가 적습니다.




Non-Clustered Index 단점

 

  • 리프 페이지에는 Index에 대한 값과 맵핑된 데이터 페이지의 위치 정보를 맵핑한 저장 공간이기 때문에 Clustered Index 보다 필요한 저장 공간이 더 필요합니다

 

  • 리프 페이지에서 데이터 페이지로 접근하기 때문에 Clustered Index 보다 검색 속도가 상대적으로 느립니다.



- 자료 참조 : https://inpa.tistory.com/entry/MYSQL-%F0%9F%93%9A-%EC%9D%B8%EB%8D%B1%EC%8A%A4index-%ED%95%B5%EC%8B%AC-%EC%84%A4%EA%B3%84-%EC%82%AC%EC%9A%A9-%EB%AC%B8%EB%B2%95-%F0%9F%92%AF-%EC%B4%9D%EC%A0%95%EB%A6%AC#%ED%81%B4%EB%9F%AC%EC%8A%A4%ED%84%B0_%EC%9D%B8%EB%8D%B1%EC%8A%A4_(Primary_Index)

+ Recent posts