DB & AWS Knowledge
MySQL / MariaDB (InnoDB 기준) index 종류 본문
해당 페이지에서는 MySQL / MariaDB Index 종류에 대해서 알아본다.
(참조 : opentutorials.org/module/98/1538)
(참조 : m.blog.naver.com/varkiry05/221347489960)
해당 페이지를 보기 전, 인덱스의 기본 개념을 알고 싶다면
아래의 인덱스 개요글을 먼저 보는 것을 권장한다.
2021.03.09 - [DB 관련 지식/DB 개념] - 인덱스 (Index)
인덱스 (Index)
해당 페이지에서는 DB 에서 쓰이는 인덱스 개념에 대해서 알아본다. (참고 사이트) itholic.github.io/database-index/, ko.wikipedia.org/wiki/%EC%9D%B8%EB%8D%B1%EC%8A%A4_(%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%B2%..
dbknowledge.tistory.com
MySQL / MariaDB 는 다양한 스토리지 엔진을 구성 할 수 있기 때문에 그에 따른 사용가능한 인덱스 종류가 다를 수 있다. 이 페이지에서는 가장 많이 쓰이는 스토리지 엔진인 InnoDB 를 기준으로 설명한다.
우선 MySQL / MariaDB 의 기본 syntax (구문 문법) 는 아래와 같다. (출처 : MySQL 공식 Doc)
CREATE [UNIQUE | FULLTEXT | SPATIAL] INDEX index_name
[index_type]
ON tbl_name (key_part,...)
[index_option]
[algorithm_option | lock_option] ...
key_part:
col_name [(length)] [ASC | DESC]
index_option: {
KEY_BLOCK_SIZE [=] value
| index_type
| WITH PARSER parser_name
| COMMENT 'string'
}
index_type:
USING {BTREE | HASH}
algorithm_option:
ALGORITHM [=] {DEFAULT | INPLACE | COPY}
lock_option:
LOCK [=] {DEFAULT | NONE | SHARED | EXCLUSIVE}
MySQL / MariaDB 인덱스 속성에 따라 Btree, Hash 인덱스를 선택 할 수 있으며, 이에 대한 특성은 위 링크를 참조 한다.
실무적으로 특정 설정이 없다면 InnoDB 가 사용하는 기본 인덱스는 B-Tree 구조다.
Hash 는 메모리를 활용하는 인메모리 스토리지 엔진에서 주로 사용하나 (ex : NDB 클러스터 스토리지)
특성 조건에 따라 Innodb 에서 사용을 할 수 있다. (참조 링크 :hoing.io/archives/12610)
MySQL Hash Index
1. MySQL Hash IndexHash index 는 B-tree 만큼 일반적/범용적으로 사용되지는 않지만 고유의 기능과 특성을 가지고 있는 인덱스 오브젝트 입니다. Hash index 는 동등(equal =) 비교 검색시 사용 및 최적화 되
hoing.io
또한 응용에 따라서 Adaptive Hash Index 라는 Hash Index 에서 파생한 MySQL / MariaDB 의 고유 인덱스를 사용 할 수도 있는데, 이를 활용하여 성능을 개선한 좋은 사례글이 kakao tech 블로그에 있다.
(참조 링크: 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의 대표적인
tech.kakao.com
'MySQL > 아키텍처 및 내부 구조' 카테고리의 다른 글
MySQL / MariaDB 기본 아키텍처 (쿼리 실행 과정) (0) | 2021.03.16 |
---|---|
MySQL / MariaDB 기본 아키텍처 (Engine) (0) | 2021.03.12 |
MySQL / MariaDB Lock 종류 (InnoDB 기준) (0) | 2021.03.05 |
MySQL / MariaDB 트랜잭션 Isolation Level (0) | 2021.03.03 |
MySQL / MariaDB MVCC (0) | 2021.03.03 |