mysql 어댑티드 해시 인덱스

BackEnd_Ash.log·2023년 7월 30일
0

database

목록 보기
30/31

Adaptive Hash Index(AHI)는 MySQL InnoDB 스토리지 엔진의 고성능 기능 중 하나로, 특히 '읽기' 작업에 있어 데이터 액세스의 효율성을 크게 향상시킵니다. InnoDB에서는, AHI를 사용하여 일반적인 인덱스 검색을 보다 빠르게 수행할 수 있습니다.

Adaptive Hash Index의 작동 방식은 다음과 같습니다:

  1. InnoDB 스토리지 엔진은 데이터를 읽을 때 그 결과를 인덱스 페이지에 캐시합니다. 이는 데이터의 일부분이 메모리에 상주하게 하여 더 빠른 액세스를 가능하게 합니다.

  2. InnoDB는 또한 데이터 액세스 패턴을 모니터링하며, 일정한 패턴이나 '핫 스팟'을 감지하면 해당 패턴에 대한 해시 인덱스를 생성합니다. 이는 CPU 사용량을 줄이고 데이터 액세스를 더욱 빠르게 만듭니다.

  3. 이후에 같은 데이터에 대한 요청이 들어올 경우, InnoDB는 B-Tree 인덱스를 순회하지 않고 바로 해시 인덱스를 참조하여 데이터를 빠르게 찾아냅니다.

이렇게 동적으로 인덱스를 생성하고 관리하는 것이 '어댑티브(Adaptive)'라는 수식어가 붙는 이유입니다.

그러나 Adaptive Hash Index는 데이터 액세스 패턴이 일정하지 않거나, 쓰기가 많은 환경에서는 성능 저하를 가져올 수 있습니다. 왜냐하면 새로운 해시 인덱스를 생성하고 관리하는 것은 자원을 소모하며, 쓰기가 많은 환경에서는 인덱스가 빈번하게 업데이트되어야 하기 때문입니다. 따라서 환경에 따라 AHI의 사용 여부를 결정해야 합니다.

이러한 인덱스는 데이터베이스에서 데이터를 빠르게 검색하는 데 사용되는 자료구조입니다. 일반적으로, 대부분의 데이터베이스 인덱스(예를 들어, B-Tree 인덱스)는 트리 형태의 구조를 가지고 있습니다. 따라서 데이터를 찾기 위해 이 트리를 순회(traverse)해야 합니다.

트리를 순회하는 것은 상당히 효율적인 방법이지만, 그럼에도 불구하고 비용이 발생합니다. 특히 대용량의 데이터를 다루는 상황에서는 이 비용이 상당히 커질 수 있습니다.

여기에서 Adaptive Hash Index가 쓰이는데, 이것은 InnoDB가 자주 접근하는 데이터에 대해 생성하는 해시 인덱스입니다. 해시 인덱스는 키를 해시 함수에 입력하면 데이터의 위치를 직접 알려주는 구조를 가지고 있습니다. 따라서 트리를 순회하는 비용 없이, 즉시 데이터를 찾아낼 수 있습니다.

즉, '같은 데이터에 대한 요청이 들어올 경우, InnoDB는 B-Tree 인덱스를 순회하지 않고 바로 해시 인덱스를 참조하여 데이터를 빠르게 찾아낸다'는 것은, InnoDB가 Adaptive Hash Index를 활용해서 데이터를 더 빠르게 찾아내는 방식을 설명한 것입니다. 이렇게 하면 CPU 사용량을 줄이고 데이터 액세스를 더욱 빠르게 만드는 효과가 있습니다.

profile
꾸준함이란 ... ?

0개의 댓글