본문 바로가기

CS/DataBase

(MySQL) Adaptive Hash Index

Adaptive Hash Index이란?

B-Tree 인덱스를 보완하기 위해서 나온 기법이다.

B-Tree 인덱스는 데이터의 양이 아무리 증가해도 데이터 접근 퍼포먼스가 선형적으로 증가하지 않는다는데 장점이 앗다.

 

하지만 자주 조회되는 데이터임에도 불구하고 매번 트리의 경로를 쫓아가야 하므로 조금 고지식한 경향이 있다.

 

Adaptive Hash Index는 B-Tree의 이러한 단점을 보완하기 위해서 자주 사용되는 데이터 값만 내부적으로 해시 값을 생성하여 조회를 성능을 높인다. (즉 모든 데이터에 해시 값을 적용하지 않는다는 것이다.)

Adaptive Hash Index


Adaptive Hash Index의 장점

자주 사용되는 자원을 해시 값을 통해서 접근하기 때문에 락(Mutex)으로 인한 지연이 줄어든다.

B-Tree인덱스 보다 훨씬 빠른 속도로 데이터 처리가 가능하다.

  • B-Tree 접근비용 : O(LogN)  Adaptive Hash Index 접근비용 : O(1)

Adapter Hash Index 사용 이후 CPU 사용률이 내려감
세마포어도 현저히 줄었다.

주의사항

빈번한 데이터 접근이 많은 환경에서는 효율이 좋지만 테이블이 오래된 경우에는 해시 값이 메모리에 남아있는 경우가 있으므로 이러한 경우의 제어는 불가하다는 단점이 있다.

테이블 Drop 시 영향을 줄 수 있다.


References

https://tech.kakao.com/2016/04/07/innodb-adaptive-hash-index/

 

MySQL InnoDB의 Adaptive Hash Index 활용

개요 MySQL의 InnoDB에는 Adaptive Hash Index 기능이 있는데, 어떤 상황에서 효과가 있고 사용 시 반드시 주의를 해야할 점에 대해서 정리하도록 하겠습니다. InnoDB B-Tree 인덱스 MySQL의 InnoDB의 대표적인 인덱스는 B-Tree입니다. 데이터는 Primary Key 순으로 정렬되어 관리되고, Secondrary Key는 인덱스키+PK를 조합으로 정렬이 되어 있습니다. 즉, 특정 데이터를 찾기 위해서는 Secondra

tech.kakao.com

 

'CS > DataBase' 카테고리의 다른 글

(MySQL) Replication  (0) 2020.03.29
(MySQL) Direct I/O  (0) 2020.03.08
(MySQL) ACID : 트랜잭션을 통한 동시성 제어  (0) 2020.03.08
(MySQL) MyISAM vs InnoDB  (0) 2020.02.16
(MySQL) Inno Storage 엔진  (0) 2020.02.16