IBM Books
(C) IBM Corp. 2000

DB2 Extension Net Search - Guide d'administration et d'utilisation

Création d'un index de texte pouvant être utilisé par la recherche de procédure mémorisée

Pour pouvoir utiliser la recherche de procédure mémorisée, vous devez spécifier les options de la mémoire cache pendant la commande CREATE INDEX. Ceci permet d'obtenir de hautes performances, en déplaçant toutes les données spécifiées dans la mémoire principale.

Cependant, avant la première mise à jour de l'index pour la recherche, vérifiez que votre table contient des documents pour éviter la mise à jour d'un index sur une table vide. Ceci permet d'obtenir de meilleures performances d'indexation et une solide estimation de la configuration requise pour la mémoire cache.

La recherche de procédure mémorisée vous permet de renvoyer rapidement des données prédéfinies, associées à un document. Utilisez l'option 'cache table' pour définir cela dans la commande CREATE INDEX. La commande ACTIVATE CACHE déplace alors les données spécifiées dans une mémoire cache.

Remarque

Les fonctions de recherche scalaires SQL peuvent également utiliser cet index de texte, s'il n'a pas été créé sur une vue.

Dans un environnement DB2 réparti, vous devez spécifier un espace table pour les tables d'administration sur un seul noeud pour la procédure mémorisée et émettre un appel sur ce noeud de manière explicite.

Pour être sûr que vous vous connectez au bon noeud, utilisez la variable d'environnement DB2NODE.

Lors de la création d'un index de texte pour la recherche de procédure mémorisée, vous devez déterminer et calculer les paramètres suivants :

Les types de mémoire cache suivants sont disponibles :

Mémoire cache temporaire
Elle est reconstituée à chaque commande DB2TEXT ACTIVATE CACHE et requiert le chargement des données d'une table DB2 dans la mémoire. Cette opération est plus longue que l'activation d'une mémoire cache persistante, en particulier pour les index de grande taille. Cependant, elle peut fournir des performances de recherche légèrement meilleures.

Mémoire cache persistante
Elle est gérée sur le disque et peut être rapidement mappée vers la mémoire au moyen du système d'exploitation à chaque commande DB2TEXT ACTIVATE CACHE. Dans des scénarios de mise à jour incrémentielle de l'index, elle doit restée activée pour permettre la synchronisation entre l'index et la mémoire cache. Si ce n'est pas le cas, la commande DB2TEXT ACTIVATE CACHE suivante recrée totalement la mémoire cache.

Les méthodes de mise à jour de l'index de texte suivantes sont disponibles :

Sans l'option Recreate index on update
Evitez de supprimer ou de ré-insérer un document dans la table car l'emplacement d'un document supprimé ne peut pas être réutilisé dans la mémoire cache. En conséquence de quoi, la modification des colonnes de clé doit être évitée sur un index activé.

Cette opération est également connue sous le nom de mise à jour incrémentielle.

Avec l'option Recreate index on update
Cette opération recrée l'index à chaque mise à jour. Utilisez au tant que possible des types de données variables dans les expressions de la colonne de la mémoire cache. Ceci économisera de l'espace en mémoire cache. Utilisez les expressions de transtypage correspondantes dans la clause CACHE TABLE.

Utilisez cette option si vous pensez insérer plus de 50% de vos documents après l'activation initiale de l'index.

L'Extension Net Search fournit deux fonctions SQL vous permettant de déterminer les paramètres de la mémoire CREATE INDEX : MAXIMUM CACHE SIZE et PCTFREE.

Pour les mises à jour incrémentielles et avec recréation
La commande suivante renvoie la valeur recommandée de la taille maximale de la mémoire cache MAXIMUM CACHE SIZE en Mo :
DB2EXT.MAXIMUM_CACHE_SIZE(maximumNumberDocs INTEGER, 
       averageRowLength INTEGER, numberOfCacheColumns INTEGER)

La commande suivante renvoie le paramètre de longueur moyenne d'une ligne de votre table :

SELECT AVG(LENGTH(cache column_1) + ... + LENGTH(cache column_n))

Notez que la moyenne peut changer considérablement si d'autres documents sont insérés dans la table. Le nombre de colonnes en mémoire cache fait référence au nombre d'expressions de colonne utilisées dans la clause CACHE TABLE de la commande DB2TEXT CREATE INDEX.

Pour plus d'informations, reportez-vous à l'Annexe B, Utilisation de grandes quantités de mémoire.

Pour les mises à jour incrémentielles uniquement
La commande suivante renvoie la valeur PCTFREE recommandée, en fonction des nombres réel et maximal de documents.
DB2EXT.PCTFREE(actualNumberDocs INTEGER, maximumNumberDocs INTEGER)

Le nombre réel de documents correspond au nombre de lignes de la table au moment de la première commande ACTIVATE CACHE qui crée la mémoire cache.

Le nombre maximal de documents est une estimation du nombre maximal de documents contenus dans la table avant que la commande DB2TEXT ACTIVATE suivante (dans le cas d'une mémoire cache temporaire) ou DB2TEXT ACTIVATE CACHE RECREATE (dans le cas d'une mémoire cache persistante) ne soit exécutée.

Si l'index est recréé à chaque mise à jour, définissez la valeur de PCTFREE à 0.

Exemples

Présumez que votre table comporte 10 000 lignes et que vous ne pensez pas qu'elle en dépassera 20 000. Utilisez l'appel suivant pour calculer la valeur de PCTFREE requise :

db2  "values DB2EXT.PCTFREE(10000,20000) "

Présumez que la taille maximale de ligne est 20 000 et que vous disposez de deux lignes dans la mémoire cache avec une taille moyenne de 76. Utilisez l'appel suivant pour renvoyer la taille :

db2 " values DB2EXT.MAXIMUM_CACHE_SIZE(20000,76,2) "

Une fois les paramètres adéquats déterminés, vous pouvez créer votre index et la table de mémoire cache à l'aide de l'appel suivant :

db2text CREATE INDEX db2ext.comment FOR TEXT ON db2ext.texttab (comment) 
          CACHE TABLE (docid) PCTFREE 10 MAXIMUM CACHE SIZE 5

Dans cet exemple, la colonne docid est constituée en plus de l'index, utilisant la mémoire principale pour un renvoi rapide de la table de résultats. 10% de la mémoire cache sont réservés aux futurs documents et la mémoire cache est limitée à 5 Mo maximum.

Mise à jour de l'index de texte

Pour rechercher dans cet index, vous devez le mettre à jour, puis l'activer. Cette opération copie l'expression 'cache table' spécifiée de la base de données dans la mémoire.

Si pendant les opérations ACTIVATE ou UPDATE, les valeurs de MAXIMUM CACHE SIZE ou MAXIMUM NUMBER OF DOCUMENTS sont dépassées, il est recommandé de procéder comme suit :

Taille maximale de mémoire cache (MAXIMUM CACHE SIZE) pour des mises à jour incrémentielles
Générez à nouveau la mémoire cache à l'aide de la séquence de commandes DB2EXT suivante : DEACTIVATE CACHE, ALTER INDEX, MAXIMUM CACHE SIZE et ACTIVATE CACHE RECREATE.

Nombre maximum de documents (MAXIMUM NUMBER OF DOCUMENTS)
Utilisez les commandes DEACTIVATE CACHE et ACTIVATE CACHE RECREATE pour des mises à jour incrémentielles ou recréez l'index.

Si vous attendez de fréquentes mises à jour des documents, envisagez l'utilisation de types de données de taille fixe pour les expressions de la colonne de mémoire cache dans la clause CACHE TABLE. L'exemple suivant montre comment utiliser la même mémoire cache pendant les opérations de mise à jour.

CACHE TABLE(cast(C1 as char(20)), cast(substr(C2,1,10) as char(10))....

Activation et désactivation de la mémoire cache pour un index de texte

Avant l'activation de la mémoire cache, effectuez toutes les mises à jour incrémentielles en attente afin d'éviter un mauvais calcul de la valeur de PCTFREE.

Pour activer l'index de texte, utilisez la commande suivante :

db2text ACTIVATE CACHE FOR INDEX db2ext.comment FOR TEXT
 

Cette commande extrait les données de la table de la mémoire cache spécifiée hors de la la base de données et les stocke en mémoire. La durée requise dépend de la taille de la table.

Remarque

Si vous appelez update index lorsqu'un index est activé, les tables de la mémoire cache seront également mises à jour. Les documents supprimés occupant des emplacements en mémoire cache, veillez à définir une valeur suffisante pour PCTFREE.

L'appel ACTIVATE CACHE doit être réitéré chaque fois que vous arrêtez votre système. Si vous utilisez la mémoire cache persistante, la nouvelle activation sera plus rapide.

Remarque

Si une mise à jour a lieu lorsque la mémoire cache persistante n'est pas activée, cette dernière est supprimée et recréée lors de l'appel d'activation.

Pour économiser les ressources, vous devez également désactiver les index qui ne sont pas couramment requis.

Pour vérifier la quantité de mémoire restante, utilisez l'appel suivant :

db2text control show cache status for database cte index db2ext.comment

Ceci indique si l'index a été activé et la quantité d'espace restant dans la mémoire cache spécifiée.


[ Début de page | Page précédente | Page suivante | Table des matières | Index ]