índice mysql-B+tree InnoDB

Introducción básica al árbol B+ (la diferencia de altura de equilibrio es inferior a 2)

Los árboles B+ son una extensión de los árboles B que permiten operaciones eficientes de inserción, eliminación y búsqueda.

En los árboles B, tanto las claves como los registros se pueden almacenar en nodos internos y nodos hoja. Sin embargo, en un árbol B+, los registros (datos) solo se pueden almacenar en nodos hoja y los nodos internos solo pueden almacenar valores clave.

Los nodos de hoja del árbol B+ están vinculados entre sí en una lista de enlaces únicos para que las consultas de búsqueda sean más eficientes.

Los árboles B+ se utilizan para almacenar grandes cantidades de datos que no se pueden almacenar en la memoria principal. Debido a que el tamaño de la memoria principal siempre está limitado, los nodos internos del árbol B+ (claves para acceder a los registros) se almacenan en la memoria principal, mientras que los nodos hoja se almacenan en la memoria auxiliar.

Los nodos internos del árbol B+ generalmente se denominan nodos de índice

Los que tienen nodos secundarios son nodos internos y los que no tienen nodos secundarios son nodos hoja.

Introducción a la relación entre almacenamiento en disco e innodb

Cuando el sistema lee datos del disco a la memoria, la unidad básica es el bloque de disco (bloque) Los datos ubicados en el mismo bloque de disco se leerán a la vez, en lugar de lo que se necesita.

El motor de almacenamiento InnoDB tiene el concepto de una página (Page), que es la unidad más pequeña de gestión de su disco . El tamaño predeterminado de cada página en el motor de almacenamiento InnoDB es de 16 KB, y el tamaño de página se puede establecer en 4K, 8K o 16K a través del parámetro innodb_page_size

Sin embargo, el espacio de almacenamiento de un bloque de disco en el sistema a menudo no es tan grande, por lo que cada vez que InnoDB solicita espacio en disco, utilizará varios bloques de disco con direcciones consecutivas para lograr un tamaño de página de 16 KB. InnoDB usa páginas como la unidad básica cuando lee datos de disco en la memoria. Al consultar datos, si cada pieza de datos en una página puede ayudar a ubicar la ubicación del registro de datos, esto reducirá la cantidad de E/S de disco. Mejore la eficiencia de las consultas

Introducción detallada al árbol B+

  1. Los nodos que no son hojas solo almacenan información de clave-valor;

  1. Hay un puntero de cadena entre todos los nodos hoja, que puede mejorar la eficiencia de las consultas de rango;

  1. Los registros de datos se almacenan en nodos hoja;

  1. Todos los nodos hoja (es decir, nodos de datos) son una estructura de lista enlazada única. Por lo tanto, se pueden realizar dos operaciones de búsqueda en B+Tree: una es la búsqueda por rango y la búsqueda por página de la clave principal, y la otra es una búsqueda aleatoria a partir del nodo raíz.

Comparación de árbol B y árbol B +

INNODB

InnoDB使用了聚簇索引(Clustered),即所有二级索引聚集在主键索引上,对InnoDB存储引擎表的任何访问,最终一定要搜索主键索引树

在InnoDB中,二级索引上没有实际的数据,存储的是主键索引的值。这样的话,如果是基于二级索引的查询,会先在二级索引上搜索得到主键索引的值,然后再去主键索引树上搜索,得到最终的行数据。

这就意味着,至少有一次索引查找,可能会有两次索引查找,其中一定有一次主键索引查找

在InnoDB中,主键要设计的尽量主键越小二级索引也会越小

如果主键用更大的数据类型,由于二级索引上有主键索引的值,那么不只是主键索引树变的更大更高,其他的二级索引树也会更大更高

二级索引:所有不是主键索引的索引

树高度决定因素

阶树:描述一颗 B 树时需要指定它的阶数,阶数表示了一个节点最多有多少个孩子节点,一般用字母 m 表示阶数,阶树也决定了树的高度

根节点的关键字数量范围:1 <= k <= m-1,非根节点的关键字数量范围:m//2 <= k <= m-1,超出范围就会分裂新的内部节点。

树高度越小,查询io操作就会越少,读写也就越快

Supongo que te gusta

Origin blog.csdn.net/xiaofeixia666888/article/details/129753460
Recomendado
Clasificación