Dans Oracle, le retournement d'index fait référence à l'inversion d'octets de la valeur de clé d'index de la colonne d'index lors de la création d'un index, atteignant ainsi l'objectif de stocker de manière dispersée différents blocs de nœuds enfants. Il s'agit d'une branche de l'index "B-tree" ; En utilisant l'index inversé, les valeurs clés des colonnes d'index peuvent être inversées et les valeurs clés séquentielles peuvent être dispersées dans différents blocs feuilles, réduisant ainsi les conflits pour les blocs d'index.
L'environnement d'exploitation de ce tutoriel : système Windows 10, Oracle version 12c, ordinateur Dell G3.
En tant que branche de l'index B-tree, l'index inversé effectue principalement une inversion d'octets sur la valeur de la clé d'index de la colonne d'index lors de la création de l'index pour obtenir un stockage dispersé vers la destination de différents. feuille
blocs de sous-nœuds.
Le problème ciblé par l'index inversé
En utilisant l'index B-tree traditionnel, lorsque les colonnes d'index sont générées dans l'ordre, les valeurs de clé d'index correspondantesseront essentiellement distribuées dans le même bloc feuille. Lorsque les utilisateurs opèrent sur cette colonne, des conflits pour les blocs d'index se produiront inévitablement.
Utilisez un index inversé pour inverser les valeurs clés de la colonne d'index afin de disperser les valeurs clés séquentielles dans différents blocs feuilles, réduisant ainsi les conflits pour les blocs d'index.
Par exemple : les valeurs clés 1001, 1002, 1003, après inversion, elles sont 1001, 2001, 3001, puis dispersées dans les blocs de nœuds feuilles inutilisés.
Lors du chargement de certaines données ordonnées, l'index rencontrera certainement des goulots d'étranglement liés aux E/S. Lors du chargement des données, certaines parties de l'index et du disque seront forcément utilisées beaucoup plus fréquemment que d'autres. Pour résoudre ce problème, l'espace table d'index peut être stocké sur une architecture de disque capable de diviser physiquement les fichiers sur plusieurs disques.
Pour résoudre ce problème, Oracle propose également une méthode pour inverser l'index clé. Si les données sont stockées avec un index à clé inversé, les valeurs des données seront à l'opposé des valeurs initialement stockées. De cette manière, les données 1234, 1235 et 1236 sont stockées sous les noms 4321, 5321 et 6321. Le résultat est que l'index met à jour un bloc d'index différent pour chaque ligne nouvellement insérée.
Le traitement des clés d'inversion ne peut pas être effectué sur les index bitmap et les tables organisées en index.
Astuce :Si vous disposez d'une capacité disque limitée et que vous devez effectuer de nombreux chargements ordonnés, vous pouvez utiliser l'indexation par clé inversée.
Vous ne pouvez pas utiliser d'index à clé inversée avec des index bitmap ou des tables organisées en index.
Pratique ORACLE DBA : Créer un index de mots clés inversésPour les grands systèmes de traitement de transactions en ligne, les tables sont généralement très volumineuses. Les clés primaires de ces tables sont générées par des numéros de série et il y a des index dessus. Par conséquent, des enregistrements d'index adjacents peuvent exister dans le même bloc de données, ce qui entraînera une concurrence pour les blocs de données. Au fil du temps, les anciennes données inutiles seront continuellement supprimées et de nouvelles données utiles seront insérées dans ces tableaux. Évidemment, les données supprimées sont d'anciennes données avec un petit numéro de série, tandis que les données insérées ont un numéro de série nouvellement généré (obligatoire). être un grand nombre), ce qui pose un autre problème sérieux : c'est-à-dire que l'arbre d'index est biaisé du côté des numéros de séquence plus grands, ce qui approfondira la profondeur de l'arbre et réduira l'efficacité du système.
Afin de résoudre les problèmes ci-dessus, Oracle a introduit l'index de mots clés inversé. L'indexation inversée des mots-clés est obtenue en inversant l'ordre de chaque octet du mot-clé (numéro de série), puis en réindexant. Un exemple est le suivant :
Comme le montre ce qui précède, le numéro de commande adjacent d'origine n'est plus adjacent après avoir été inversé. De cette manière, le numéro de commande adjacent peut être dispersé dans différents blocs de données. le problème est résolu. Facile à résoudre.
Mais les choses sont toujours divisées en deux, et il y a aussi des problèmes avec le mot-clé d'index inversé. Par exemple, vous rencontrerez des problèmes lors de l'exécution de requêtes de plage sur des tables avec des index de clé inversés. Dans le cadre d'une indexation normale, les enregistrements d'index qui remplissent les conditions doivent être placés dans le même bloc de données ou dans des blocs de données adjacents, ce qui sera très rapide. Cependant, après avoir utilisé l'index par mot-clé inversé, les enregistrements d'index adjacents d'origine qui remplissent les conditions ont été dispersés en plusieurs ; blocs de données, la seule façon de terminer l’opération de requête est d’effectuer une analyse complète de la table. Par conséquent, au moment de décider d'utiliser un index de mots-clés inversé, il est nécessaire de distinguer si l'opération d'insertion est importante ou si la requête par plage est importante.
Tutoriel recommandé : "
Tutoriel vidéo OracleCe qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!