Mysql이 기본 데이터 구조로 B+ 트리를 선택하는 이유는 무엇입니까?

인덱스 하단에는 어떤 데이터 구조가 사용되며 다른 데이터 구조 대신 B+ 트리가 사용되는 이유는 다음과 같습니다.

(1) 이진 트리를 사용하는 경우: 증분 필드를 인덱스로 사용하면 이진 트리가 연결 목록으로 변질되어 검색 효율성이 너무 낮습니다.

(2) 레드-블랙 트리를 사용하면 새 요소를 삽입하는 동안 자체 균형을 맞추고 위치를 조정하지만 결국 레드-포크 트리는 여전히 이진 트리입니다. 높을수록 I/O 작업이 너무 많고 다중 경로 트리 B 트리 및 B+ 트리의 레이어 높이가 더 낮습니다.

(3) 해시 테이블을 사용하는 경우: 단일 쿼리에서는 해시 테이블이 실제로 빠르지만 범위 쿼리(예: select * from table1 where id)

(4)

1. B-트리의 리프가 아닌 노드와 리프 노드 사이에는 중복이 없고, B+ 트리의 리프가 아닌 노드와 리프 노드 사이에는 중복이 있습니다. 즉, B+ 트리에는 중복 노드가 있습니다.

2. B-트리의 리프가 아닌 노드와 리프 노드 모두 인덱스 키와 데이터를 모두 저장합니다. B+ 트리의 리프가 아닌 노드는 인덱스만 저장하고 데이터는 저장하지 않습니다. 리프 노드는 인덱스와 인덱스를 모두 저장합니다. 데이터.

3. B-트리의 리프 노드는 디스크에 인접한 노드의 위치를 ​​저장하지 않지만 B+ 트리의 리프 노드는 디스크에 인접한 노드의 위치를 ​​저장하므로 B+ 트리는 범위 쿼리를 지원합니다.

4. B-트리에서는 리프 노드를 찾지 않고도 데이터를 찾을 수 있지만, B+ 트리에서는 리프 노드까지 데이터를 찾아야 합니다.

Supongo que te gusta

Origin blog.csdn.net/weixin_47414034/article/details/132667894
Recomendado
Clasificación