>  기사  >  데이터 베이스  >  mysql 인덱스는 어떤 역할을 하나요?

mysql 인덱스는 어떤 역할을 하나요?

little bottle
little bottle원래의
2019-05-10 16:55:376989검색

데이터베이스의 색인은 대학 도서관에 구축된 서지 색인과 유사하여 데이터 검색 효율성을 향상시키고 데이터베이스의 IO 비용을 줄일 수 있습니다. MySQL의 성능은 약 300만 개의 레코드를 중심으로 점차 저하되기 시작하므로, 대용량 데이터를 접할 경우 인덱스 생성이 매우 필요합니다.

mysql 인덱스는 어떤 역할을 하나요?

MySQL의 인덱스에 대한 공식 정의는 다음과 같습니다. 인덱스는 MySQL이 데이터를 효율적으로 얻는 데 도움이 되는 데이터 구조입니다.

빠르게 검색하고 정렬할 수 있는 데이터 구조라고 간단히 이해하면 됩니다.

Mysql 인덱스는 크게 B+Tree 인덱스와 Hash 인덱스의 두 가지 구조로 되어 있습니다.

우리가 일반적으로 인덱스라고 부르는 것은 특별한 언급이 없는 한 일반적으로 B-트리 구조(B+트리 인덱스)로 구성된 인덱스를 의미합니다. 인덱스는 위의 그림에 나와 있습니다.​​

​​ 가장 바깥쪽 하늘색 디스크 블록 1에는 데이터 17, 35(짙은 파란색)와 포인터 P1, P2, P3(노란색)이 포함되어 있습니다. P1 포인터는 17보다 작은 디스크 블록을 나타내고, P2는 17-35 사이이며, P3은 35보다 큰 디스크 블록을 나타냅니다. 실제 데이터는 자엽 노드, 즉 맨 아래 레이어인 3, 5, 9, 10, 13에 존재합니다... Non-leaf 노드는 실제 데이터를 저장하지 않고, 17, 35 .

검색 프로세스: 예를 들어 28개의 데이터 항목을 검색하려면 먼저 디스크 블록 1을 메모리에 로드하고 I/O가 발생하고 이진 검색을 사용하여 P2 포인터를 결정합니다. 그러면 28이 26과 30 사이임을 알 수 있고 디스크 블록 3이 P2 포인터의 주소를 통해 메모리에 로드되고 두 번째 I/O가 발생합니다. 동일한 방식으로 디스크 블록 8을 찾고 세 번째 I/O가 발생합니다.

실제 상황은 위의 B+Tree 3개 계층이 수백만 개의 데이터를 표현할 수 있다는 것입니다. 수백만 개의 데이터에 대해 수백만 개의 I/O가 아닌 단 3개의 I/O만 발생합니다.

위 내용은 mysql 인덱스는 어떤 역할을 하나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.