프로필사진
DevOps 부트캠프 기록일지
DevOps_04_김재환
16_Study(인덱스)
16_Study(인덱스)

2023. 3. 30. 02:58부트캠프/DevOps (TIL)

인덱스(Index)는 데이터베이스에서 검색 속도를 높이기 위한 데이터 구조 중 하나입니다. 이는 테이블의 특정 열(Column)에 대한 검색 속도를 향상시키기 위해 사용됩니다.

인덱스는 데이터베이스에 저장된 데이터를 검색할 때, 테이블의 모든 행을 순차적으로 조회하는 것이 아니라, 인덱스에 저장된 데이터를 검색하여 더 빠르게 검색 결과를 가져올 수 있도록 해줍니다. 이는 특히 대규모 데이터베이스에서 성능 향상을 가져올 수 있습니다.

 

예를 들어, 블로그에서 게시물을 검색하는 경우, 게시물의 제목, 작성일, 작성자 등의 정보가 있습니다. 이때, 인덱스를 사용하면 게시물의 제목이나 작성일 등을 기준으로 더욱 빠르게 검색할 수 있습니다. 즉, 인덱스를 사용하면 검색 속도를 높일 수 있으며, 대규모 데이터에서 더욱 효과적으로 검색할 수 있습니다.

데이터베이스에서 인덱스는 B-Tree, Hash Table 등의 데이터 구조로 구현됩니다. 이는 데이터의 검색, 삽입, 삭제 등의 작을 효율적으로 처리하기 위해 사용됩니다.

 

 

  • B-Tree 인덱스는 데이터를 일정한 크기의 블록으로 나누어 트리 구조로 저장하는 방식입니다. 이를 이용하면 데이터를 검색할 때 블록 단위로 읽어오므로 I/O 비용을 줄일 수 있어서 빠른 검색 속도를 보장할 수 있습니다. 또한, 데이터의 삽입, 삭제가 일어날 때도 효율적으로 처리할 수 있어서 데이터의 일관성을 유지할 수 있습니다.

 

  • Hash Table 인덱스는 해시 함수를 이용하여 데이터를 키와 값의 쌍으로 매핑하여 저장하는 방식입니다. 이를 이용하면 키를 바로 해시 함수에 적용하여 검색할 수 있기 때문에 매우 빠른 검색 속도를 보장합니다. 그러나 데이터의 삽입, 삭제가 일어날 때는 해시 충돌 등의 문제가 발생할 수 있어서 이를 처리하기 위한 추가적인 작업이 필요합니다.

 

인덱스를 사용하면 검색 속도가 빨라지지만, 인덱스를 생성하는 과정에서는 추가적인 시간과 별도의 저장공간이 필요하기 때문에 모든 열에 대해 인덱스를 생성하는 것은 바람직하지 않습니다. 대신, 자주 검색되는 열이나 조건절에 자주 사용되는 열 등에 대해 인덱스를 생성하는 것이 좋습니다.

 

또한, 인덱스를 사용하면 검색 속도는 빨라지지만, 데이터를 삽입, 삭제할 때에는 인덱스를 수정해야 하기 때문에 이에 따른 오버헤드가 발생할 수 있습니다. 따라서, 데이터베이스에서 인덱스를 사용할 때에는 검색 속도와 데이터 삽입/삭제 속도 등을 적절히 고려하여 사용해야 합니다.

 

데이터베이스에서 인덱스는 테이블의 성능을 향상시키는 중요한 요소 중 하나입니다. 적절한 인덱스를 사용하면 검색 속도를 높이고, 데이터를 효율적으로 처리할 수 있습니다. 따라서, 데이터베이스를 설계할 때에는 인덱스를 어떻게 사용할지를 고려하여야 하며, 인덱스의 성능을 모니터링하면서 최적화를 수행해야 합니다.

'부트캠프 > DevOps (TIL)' 카테고리의 다른 글

18_Study(OLTP vs OLAP)  (0) 2023.03.31
16_Study(Partitioning)  (0) 2023.03.30
16_Study(관계형DB, 비관계형DB)  (0) 2023.03.29
11_Study(RESTAPI)  (0) 2023.03.22
11_Study(Headers)  (0) 2023.03.22