>  기사  >  데이터 베이스  >  mysql 인덱스에는 일반적으로 어떤 데이터 구조가 사용됩니까?

mysql 인덱스에는 일반적으로 어떤 데이터 구조가 사용됩니까?

(*-*)浩
(*-*)浩원래의
2019-06-05 14:46:134844검색

MyISAM은 MySQL 5.5 이전 버전의 기본 스토리지 엔진입니다. 5.5부터는 InnoDB가 MySQL의 기본 스토리지 엔진이 됩니다.

MyISAM은 B-Tree를 사용하여 기본 키 인덱스, 고유 인덱스 및 비기본 키 인덱스를 구현합니다.

InnoDB는 기본 키가 아닌 인덱스에는 B-Tree 데이터 구조를 사용하고 기본 키 인덱스에는 B+Tree를 사용합니다.

mysql 인덱스에는 일반적으로 어떤 데이터 구조가 사용됩니까?

B-Tree

B-트리(바이너리가 아닌 다중 방향 검색 트리)는 일반적인 데이터 구조입니다. B-트리 구조를 사용하면 레코드를 찾을 때 겪는 중간 프로세스가 크게 줄어들어 액세스 속도가 빨라집니다. 번역에 따르면 B는 일반적으로 Balance의 약어로 간주됩니다. 이 데이터 구조는 일반적으로 데이터베이스 인덱싱에 사용되며 전반적인 효율성이 높습니다.

성능(추천 학습: MySQL 동영상 튜토리얼)

B-트리의 특징은 다음과 같습니다.

1. 키워드 세트는 트리 전체에 분산되어 있습니다.

2. node;

3. 검색은 리프가 아닌 노드에서 종료될 수 있습니다.

4. 검색 성능은 전체 키워드 집합의 이진 검색과 동일합니다.

B+ Tree

다른 스토리지 엔진은 스토리지에 다른 데이터 구조를 사용할 수 있습니다.

그렇다면 B+Tree는 무엇일까요?

B+Tree는 파일 시스템에 필요한 B-트리의 변형 트리입니다. m 순서 B+ 트리와 m 순서 B 트리의 차이점은 다음과 같습니다.



B+ 및 B-(예: B ) 각 노드의 키워드가 다르기 때문입니다. 하나 더, 하나 덜.

B+ 트리의 경우 노드 구조는 B-트리와 동일하지만 차이점은 각 노드의 키워드와 가질 수 있는 자식 노드 수입니다. 예를 들어, m차 B+ 트리에서 각 노드는 최대 m개의 하위 노드를 가질 수 있습니다. 루트가 아닌 노드는 적어도 [m/2]개의 자식 노드를 가지며, 키워드의 개수는 B-tree인 [m/2]~m보다 하나 더 많습니다.

인덱스 처리를 위한 두 데이터 구조의 차이점:

1. 동일한 키 값은 B-트리에 여러 번 나타나지 않으며 리프 노드 또는 리프가 아닌 노드에 나타날 수 있습니다. B+ 트리의 키는 리프 노드에 확실히 나타나며, B+ 트리의 균형을 유지하기 위해 리프가 아닌 노드에도 반복적으로 나타날 수도 있습니다.

2. B-트리 키 위치는 불확실하고 전체 트리 구조에서 한 번만 나타나기 때문에 저장 공간을 절약할 수는 있지만 삽입 및 삭제 작업의 복잡성이 크게 증가합니다. 이에 비해 B+ 트리는 더 나은 절충안입니다.

3. B-트리의 쿼리 효율성은 트리 내 키의 위치와 관련이 있으며, 최대 시간 복잡도는 B+ 트리와 동일하며(리프 노드에 있을 때) 최소 시간 복잡도는 1입니다. 루트 노드에 있습니다). B+ 트리의 시간 복잡도는 특정 구축 트리에 대해 고정되어 있습니다.

더 많은 MySQL 관련 기술 기사를 보려면

MySQL 데이터베이스 그래픽 튜토리얼

칼럼을 방문하여 알아보세요!

위 내용은 mysql 인덱스에는 일반적으로 어떤 데이터 구조가 사용됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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