perspective binaire sur disque IO, arbre B-tree, arbre B +

contour

Comme il a déjà introduit le contenu relatif TREE-B, de sorte que son architecture ici n'introduit, surtout du point de vue du disque IO, pourquoi nous devrions regarder le B-tree.

concepts associés

Cette structure de données B-arbre est souvent utilisé pour mettre en uvre l'indice de base de données, car il est recherche plus efficace.

1, le disque IO et de pré-lecture

Lecture de disque comptent sur un mouvement mécanique, divisé le temps de recherche, la latence de rotation, le temps de transmission en trois parties, la somme de ces trois parties de temps est un disque de temps IO, environ 9 ms. Le coût est cent mille fois l'accès mémoire ;

Il est à cause du disque IO est une opération très coûteuse, le système d'exploitation informatique optimisé pour ceci: pré-lecture, chaque fois IO, non seulement pour traiter les données de chargement de disque en cours dans la mémoire, mais aussi les données adjacentes est également chargé dans la un tampon de mémoire. Parce que la pré-lecture Justification locale: Lorsque l'accès aux données d'une adresse, les données adjacentes seront rapidement accessibles. Chaque données en temps disque IO lu ce que nous appelons une (page). La taille d'un système d'exploitation, généralement à 4k ou 8k. Cela signifie que la page est lue dans les données, quand il y avait en fait un disque IO.

2 et comparatif B-Tree est un arbre de recherche binaire

La complexité temporelle de requête arbre de recherche binaire est O (logN), pour trouver le plus rapide et moins nombre de comparaisons, puisque la performance a été si bon, mais pourquoi est réalisé à l'aide des index B-Tree au lieu d'un arbre de recherche binaire, le facteur clé est le disque IO fois.

Indice de base de données est sur le disque, lorsqu'une grande quantité de données dans le tableau, la taille de la mémoire d'augmentation de l'indice suivi atteindre plusieurs G ou plus. Lorsque nous utilisons la requête d'index, il est impossible d'indexer tous chargés en mémoire, ne peut charger une d'une page par disque, où la page disque sur l'arbre d'index de noeud correspondant.

Le premier discours suivant sur l'arbre binaire

arbre binaire d'abord,

Regardez d'abord le nombre de disque lorsque lookups arbre binaire IO: considérer la définition d'une hauteur d'arbre binaire est 4 pour trouver une valeur de 10:

Le premier disque IO:

La deuxième disque IO

Le troisième disque IO:

Quatrième disque IO:

processus de recherche d'arbre binaire du point de vue, le nombre de la hauteur des arbres et des IO est 4, Ainsi, le nombre de disque IO pire des cas est déterminé par la hauteur de l'arbre.

Du point de vue de l'analyse ci-dessus, réduire le nombre de disque IO doit être la hauteur de l'arbre comprimé, de sorte que l'arbre longiligne essayer de devenir arbre trapu, donc B-Tree est né dans ce contexte.

Deux, B-Tree

B-tree

m ordre B-Tree répondent aux critères suivants:

1, chaque noeud a la plus grande sous-arborescence m

2, il y a au moins deux sous-arbre racine

3, un noeud de branchement comporte au moins m / 2 unités de sous arbre (sauf le noeud racine et les noeuds de feuille sont des nuds de branchement)

4, tous les noeuds de feuille sont dans la même couche, chaque noeud peut avoir jusqu'à m-1 ième clé, et agencé dans l'ordre croissant

Suit un troisième ordre B-tree, l'élément de processus de recherche 21 a été observé:

Le premier disque IO:

Le second disque IO:

Il y a une correspondance de la mémoire 3 et 12, respectivement, avec le rapport de

Le troisième disque IO:

Il y a une correspondance de la mémoire, respectivement, 14 et 21 que

De la découverte de la découverte, que le nombre binaire B-tree et le nombre de fois que le disque IO avec peu différent, il semble n'y a aucun avantage.

Mais un examen plus attentif constatera que, L'alignement se fait en mémoire, il est pas lié au disque IO, la consommation négligeable. D'autres espèces Node B peuvent être stockés dans un grand nombre de clés (numéro d'ordre déterminé par l'arbre).

Le même nombre de clé générée dans le noeud B-tree beaucoup moins que dans les noeuds de l'arbre binaire, le numéro de noeud de fois la différence de phase est équivalent au disque IO. Après cela, atteint un certain montant, la différence de performance a commencé à se désagréger.

Trois, B arbre nouveau

De nouveaux éléments sur la base de seulement 4, il devrait être compris entre 3 et 9:

Quatrièmement, suppression B-tree

Suppression des éléments 9:

Cinq, arbre B +

Fin arbre B, arbre B + viennent à parler, et le B + structure arborescente est similaire, mais plus sur les performances des requêtes, ayant les caractéristiques suivantes:

  • Il y k ème noeud de l'arbre contient k éléments intermédiaires (arbre B est des éléments k-1), chacun des éléments de données ne sont pas enregistrée, l'index utilisé uniquement, toutes les données stockées dans le noeud de feuille;
  • noeud feuille contient tous les éléments d'information, en fonction de la taille des mots-clés sorte de gauche à droite;
  • Bien que l'élément de noeud intermédiaire existe dans le nud enfant, le nud enfant est le plus grand élément.

La figure LIBÉRATION exemple suivant:

Comme on peut le voir sur la figure, les nuds d'arbre B + et feuilles noeuds déclarations de données en double ici intermédiaires, Enregistrer noeuds intermédiaires uniquement des données d'arbre sous-sous-aiguille, et non pas de données réelles, moins d'espace de stockage noeud intermédiaire.

Pendant ce temps, avec des pointeurs entre les nuds feuilles, en d'autres termes, les noeuds feuilles forment une liste liée , Toutes les données sont stockées dans.

Pourquoi cette conception, par rapport à B-tree à quoi bon?

Tout d'abord, étant donné que le noeud intermédiaire de la borne B + sous-aiguille de l'arbre est seulement la mémorisation de données de maximum et sous-arborescence de sous-arbre, l'espace lui-même est faible, il est possible de loger l'élément plus de noeud, à savoir le même cas de données, l'arbre B + sera plus B-arbres « chunky » et donc l'efficacité plus rapide requête.

En second lieu, trouver une gamme de données, uniquement dans le noeud feuille peut parcourir la liste B + arbre, ne pas comme la séquence traversal B-tree un par un comme la comparaison de la taille. En résumé, B + avantage des arbres est:

  • Un niveau inférieur, moins nombre d'IO;
  • Besoin d'interroger chaque fois qu'un nud feuille;
  • noeuds requête de feuille de stabilité de la performance forment une liste ordonnée, la gamme des requêtes facile
  • résumé

    Insérer ou des éléments de suppression provoqueront la réaction de fission du noeud se produit, parfois très gênant, mais à cause de ce juste laisser le B-arbre peut toujours garder l'équilibre multiple, c'est un propres avantages B-arbre: l'auto-équilibrage; B-arbre est principalement utilisé dans le fichier systèmes et une partie de l'indice de base de données, comme MongoDB, donc la plupart index courant de base de données relationnelle est B + implémentés à l'aide d'arbres.

    B-tree: + équilibre réseau ordonné plusieurs arbres;

    arbre B +: un réseau ordonné d'équilibre à chaînes multiples + arbre;

    Devops et plus tard partageront les aspects DBA plus de contenu, des amis intéressés peuvent regarder -

    Huawei et Alipay, microcanaux second tour de PK! La place trop surpris en guerre
    Précédent
    Ma venue, le Nord sera « la plupart des provinces prometteuses d'aucun pays »?
    Prochain
    Recommander un outil de gestion de la réplication de MySQL hautement disponible introduit --Orchestrator
    Ma et Liu Qiang Est dernière confrontation dans le Nord?
    Des expériences ont été les performances de MySQL 0,1,2 --innodb_flush_log_at_trx_commit
    système Linux détaillé doit détecter comment les dommages sur le disque dur et blocs défectueux
    Double onze grève, l'homme le plus riche pour le travail, mais aussi des prestations sociales, Amazon est un « atelier de misère »?
    « Chihiro » dans le savoir 10% de la raison humaine, le premier à couper au cur du
    champ de base de données JSON mysql super-détaillé de type grammaire
    20 milliards Betta enfin la liste! Sicong en direct n'a pas fait une bonne affaire, les dieux de la guerre du bétail
    Je suis, 25 ans, le mois dernier gagner un million d'alevins chaussures
    mécanisme détaillé de point de contrôle de base de données MySQL, la collecte vaut
    SF Wang Wei: dans les lacs, mais aussi par le déjà
    Détaillé système de fichiers Linux --EXT4 du système de fichiers, la collecte vaut