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)
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)
또한 응용에 따라서 Adaptive Hash Index 라는 Hash Index 에서 파생한 MySQL / MariaDB 의 고유 인덱스를 사용 할 수도 있는데, 이를 활용하여 성능을 개선한 좋은 사례글이 kakao tech 블로그에 있다.
(참조 링크: tech.kakao.com/2016/04/07/innodb-adaptive-hash-index/)
'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 |