Easi Blog

AutoDBE pour les nuls

Rédigé par Rudi van Helvoirt | Mar 6, 2023 10:33:00 AM

Le monde est déjà suffisamment complexe sans l'informatique. Je me suis donc donné pour noble tâche d'expliquer ce que fait AutoDBE sur un système IBM i, de sorte que tout le monde puisse le comprendre. J'espère que vous me ferez savoir si j'y suis parvenu, après avoir lu cet article.

Le système IBM i intègre un moteur de requête SQL (SQE). Comme son nom l'indique, le SQE est le moteur qui prend en charge et exécute toutes les requêtes de récupération de données dans les fichiers. Durant l'exécution de ces requêtes, un processus évalue si le traitement d'une requête de récupération de données dans les fichiers s'exécuterait plus rapidement s'il existait un index.

Qu'est-ce qu'un index ?

Expliqué simplement : représentez-vous la base de données d'un système IBM i comme une bibliothèque. Vous pouvez comparer chaque livre de cette bibliothèque à un fichier de la base de données. Prenons l'exemple d'un livre dans lequel sont inscrits l'adresse à laquelle vivent les membres du club et leur e-mail. La personne qui a écrit ce livre a fait tout son possible pour classer tous les membres dans l'ordre alphabétique. Mais elle n'a pas créé une table des matières. De même qu'une table des matières est importante pour trouver rapidement des informations dans le livre, un index est important pour trouver rapidement des informations dans une base de données. L'index est donc en fait la table des matières du livre.

Que fait l'Index Advisor d'IBM i ?

Le moteur SQE comprend donc un processus qui dit : « dans ce livre, il me manque l'index des noms des membres par ordre alphabétique ». Le moteur SQE génère ensuite un fichier dans lequel est indiqué à quoi doit ressembler cet index et à quel livre il est rattaché. Ce fichier est le tableau Index Advisor.

Le moteur SQE enregistre à quelle fréquence le même livre est utilisé pour rechercher des membres du club et, si à chaque fois le même index fait défaut, un processus crée cet index dans la mémoire temporaire du système IBM i. Un tel index est appelé « Maintained Temporary Index » (MTI).

Combien de temps ce Maintained Temporary Index (MTI) est-il conservé ?

Étant donné qu'il s'agit d'un index qui est créé dans la mémoire temporaire du système IBM i, il n'est pas difficile de deviner ce qui se passe si l'on redémarre l'IBM i : ce MTI est supprimé.

Le moteur SQE mémorise aussi longtemps que possible toutes les requêtes de recherche d'informations dans la base de données. C'est-à-dire : jusqu'à ce qu'il n'y ait plus d'espace dans la mémoire. Si le moteur SQE n'a plus d'espace pour continuer de mémoriser une requête précédente, le MTI qui est rattaché à cette requête est aussi effacé.

Si la requête de récupération d'informations dans le fichier est effacée, il ne sert à rien de conserver le MTI correspondant, étant donné qu'il existe une relation explicite entre la requête et le MTI.

Il n'est pas très utile d'oublier la requête de récupération d'informations et cependant de conserver l'index qui est nécessaire à cet effet. Cela reviendrait à gaspiller de l'espace.

Le volume total de l'espace mémoire qu'un moteur SQE utilise est aussi une mémoire temporaire ; il est donc aussi supprimé en cas de redémarrage du système. L'espace temporaire du SQE et l'espace temporaire des MTI sont deux parties distinctes, mais toutes les deux sont temporaires : elles sont supprimées en cas de réamorçage/redémarrage du système.

Quel rôle joue donc AutoDBE dans ce contexte ?

AutoDBE examine tous les index dont la création est conseillée et les créera automatiquement (ou ne les créera pas) sur la base des paramètres figurant dans le tableau de contrôle d'AutoDBE. L'avantage est que les MTI ne sont alors plus nécessaires et que les index ne sont plus perdus lors d'un redémarrage. De plus, AutoDBE regarde aussi si les index créés sont utilisés suffisamment souvent, là aussi sur la base des paramètres du tableau de contrôle d'AutoDBE.

Pourquoi devrais-je effacer un index créé ?

Pour expliquer quelle peut être une raison d'effacer un index conseillé par le moteur SQE, voici un exemple.

Supposons que nous avons affaire à une école de filles et que le fichier des élèves comprend le champ sexe. Il n'est pas difficile de s'imaginer que dans une école de filles tous les élèves sont de sexe féminin. Le moteur SQE fait une hypothèse sur la base du champ sexe qui peut être « masculin » ou « féminin ». Dans la définition du tableau, M ou F sont les seules valeurs possibles pour le champ sexe et, sur la base de ce renseignement, le moteur SQE prend pour hypothèse que la répartition est 50/50. Bien entendu, ceci est faux dans le cas de l'école de filles, avec pour conséquence qu'un index fondé sur le champ sexe n'apporte aucun avantage en termes de performance. Si l'on recherche le nom de toutes les filles de cette école, cet index peut alors être utilisé, mais le résultat net est toutefois que chaque enregistrement dans le fichier doit être consulté. Dans ce cas, l'index n'apporte aucun avantage et il est inutile de le créer. Cet index ne sera pas utilisé et il est donc préférable de le supprimer.

Dans des circonstances normales, le suivi et l'optimisation de ces processus font partie du travail d'un ingénieur de base de données. De ce fait, un ingénieur de base de données doit accomplir quantité de tâches manuelles. AutoDBE automatise toutes ces tâches manuelles de l'ingénieur de base de données, qui peut alors se concentrer sur d'autres tâches.