DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL / Fonctions HFSQL
  • Conditions d'utilisation
  • Ré-indexation automatique
  • Ré-indexation "à chaud"
  • Calcul des statistiques
  • Répertoire des fichiers temporaires
  • Gestion des alphabets non latins
  • Droits d'accès au fichier de données
  • Cas particulier : Fichiers corrompus après reboot ou erreur fatale du poste
WINDEV
WindowsLinuxUniversal Windows 10 AppJavaEtats et RequêtesCode Utilisateur (MCU)
WEBDEV
WindowsLinuxPHPWEBDEV - Code Navigateur
WINDEV Mobile
AndroidWidget AndroidiPhone/iPadWidget IOSApple WatchMac CatalystUniversal Windows 10 App
Autres
Procédures stockées
Reconstruit l'index d'un fichier de données (fichier d'extension ".NDX"). Il est également possible de ré-indexer :
  • les index full-text (fichiers d'extension ".FTX"),
  • les index spatiaux (fichiers d'extension ".SDX").
La ré-indexation d'un fichier de données peut être effectuée même si des applications accèdent à ce fichier de données. Pour plus de détails, consultez les remarques.
Rappel : La ré-indexation ré-organise les index et peut libérer l'espace laissé libre lors des suppressions d'enregistrements. Après ré-indexation, l'accès aux index est optimal. La ré-indexation peut être rendue nécessaire par la perte ou l'altération du fichier d'index. La fonction <Source>.VérifieIndex permet de vérifier régulièrement l'état du fichier d'index.
Exemple
SI UnFichier.Réindexe(hNdxNormal) = Vrai ALORS
	TABLE_MaTable.Affiche(taDébut)
FIN
Syntaxe
<Résultat> = <Source>.Réindexe([<Mode> [, <Jauge> [, <Taux de densité>]]])
<Résultat> : Booléen
  • Vrai si la ré-indexation a été effectuée sans problème,
  • Faux dans le cas contraire. La fonction HErreur permet d'obtenir plus d'informations sur le problème rencontré.
<Source> : Type correspondant à la source spécifiée
Nom du fichier de données manipulé.
<Mode> : Constante ou combinaison de constantes de type entier (optionnel)
Paramétrage de la ré-indexation :
hChangeAlphabetRé-indexation avec changement d'alphabet.
Le nouvel alphabet défini avec la fonction ChangeAlphabet sera pris en compte lors de la ré-indexation. Les tris, recherches, ... sur des clés de type chaîne (chaînes, caractères, date et heure) seront effectués selon cet alphabet.
hFTXRé-indexation des index full-text.
hMmoCompactageCompactage et défragmentation des fichiers de type "Mmo".

Attention : Cette constante ne peut pas être combinée avec les constantes hNdxCompactage, hVérifieMémo, hFTX, hSDX, hNdxNormal ou hNdxSuppression.
hNdxCompactageRé-indexation avec compactage : seuls les enregistrements actifs sont conservés. Tous les autres enregistrements sont définitivement supprimés. L'espace libéré par les suppressions est supprimé dans le fichier de données ".FIC" et dans l'index ".NDX".
Remarque : Si des enregistrements sont en transaction, le compactage est automatiquement désactivé.
hNdxMinimalRé-indexation ne prenant en compte que les clés corrompues. Ce paramètre est ignoré si les constantes hNdxSuppression ou hNdxCompactage sont activées.
hNdxMuetRé-indexation sans affichage.
hNdxNormal
(valeur par défaut)
Ré-indexation classique (avec statistiques et sans compactage).
Les statistiques permettent d'optimiser les requêtes et les filtres (voir Notes). Le calcul des statistiques prend en compte uniquement les enregistrements actifs.
hNdxSansStatRé-indexation sans calcul de statistiques. Cette constante permet d'obtenir un gain de place car les fichiers d'index seront moins importants.
Attention : Les statistiques sont très importantes pour obtenir des temps d'exécution corrects lors de l'utilisation de requêtes, de filtres avec condition et de vues avec condition.
hNdxSuppressionRé-indexation avec suppression des enregistrements endommagés.
hSDXRé-indexation des index spatiaux.
hTâcheDeFond
HFSQL Client/Serveur Ré-indexation effectuée en tâche de fond. Les applications ne sont pas bloquées pendant la ré-indexation.
Cette fonctionnalité est disponible uniquement en mode Client/Serveur.
hVérifieMémoRé-indexation normale avec vérification des mémos et correction si nécessaire (permet de récupérer une partie des mémos endommagés).
<Jauge> : Nom de fenêtre, nom de champ ou entier optionnel
  • Nom de la fenêtre dans laquelle la jauge doit être affichée,
  • Nom du champ de type Jauge affichant la progression de la réindexation,
  • Identifiant (Handle) de la fenêtre qui affiche la jauge.
<Taux de densité> : Entier compris entre 1 et 100
Taux de remplissage des index. Par défaut, ce taux a pour valeur 60.
Remarques

Conditions d'utilisation

  • La fonction <Source>.Réindexe permet de ré-indexer un fichier xBase.
  • La fonction <Source>.Réindexe permet de réindexer les fichiers d'un cluster. Dans ce cas :
    • La réindexation est effectuée sur le noeud auquel l'utilisateur est connecté.
    • Seule une réindexation à chaud est disponible (constante hTâcheDeFond).
Etats et RequêtesHFSQL ClassicHFSQL Client/Serveur

Ré-indexation automatique

La ré-indexation d'un fichier de données peut être rendue nécessaire par la perte ou l'altération du fichier d'index. Une ré-indexation automatique des fichiers de données peut être mise en place.
Pour mettre en place la ré-indexation automatique, il faut :
  • configurer la valeur de la variable H.LimiteRéindexationAutomatique.
    En effet, si le fichier de données contient moins de H.LimiteRéindexationAutomatique enregistrements, la ré-indexation est automatique en cas d'erreur d'index.
    Par défaut, la variable H.LimiteRéindexationAutomatique vaut 100000. Si cette variable vaut 0, la ré-indexation automatique est désactivée.
  • configurer la valeur de la variable H.RéindexationAutomatiqueVisible.
    En effet, si cette variable vaut Vrai (valeur par défaut), une fenêtre est automatiquement affichée tant que la ré-indexation automatique n'est pas terminée. Cette fenêtre contient une jauge permettant de suivre la ré-indexation en cours. Cette fenêtre est personnalisable. Pour plus de détails, consultez Gestion assistée des erreurs HFSQL.
    Pendant la ré-indexation, les différentes applications manipulant les données du fichier (lecture ou écriture d'enregistrements) seront temporairement arrêtées jusqu'à la fin de la ré-indexation.
    HFSQL Client/Serveur Si la constante hTâcheDeFond est utilisée, la ré-indexation est effectuée en tâche de fond et les applications utilisant le fichier de données ne seront pas arrêtées.
Si une erreur est rencontrée pendant la ré-indexation automatique (par exemple lors d'une erreur de blocage sur le fichier de données ou sur l'enregistrement), la ré-indexation automatique est arrêtée et une erreur fatale d'index corrompu est affichée. Ce fonctionnement est identique au fonctionnement sans ré-indexation automatique.
Remarques :
  • Lors de la ré-indexation automatique, la ré-indexation est effectuée en mode normal (constante hNdxNormal).
  • La ré-indexation automatique n'est pas disponible sur les fichiers de données au format Hyper File 5.5.
  • Si une ré-indexation automatique est effectuée, les applications utilisant les fichiers de données en cours de ré-indexation sont temporairement bloquées. Un message est affiché indiquant que le fichier est en cours de maintenance.
  • A la fin de la ré-indexation, le contexte HFSQL en cours est automatiquement rétabli (sauf si une ré-indexation avec vérification des mémos a été effectuée).
Etats et RequêtesHFSQL ClassicHFSQL Client/Serveur

Ré-indexation "à chaud"

La ré-indexation d'un fichier de données peut être effectuée même si des applications accèdent à ce fichier de données.
Pendant la ré-indexation, les différentes applications manipulant les données du fichier (lecture ou écriture d'enregistrements) seront temporairement arrêtées/bloquées jusqu'à la fin de la ré-indexation.

Calcul des statistiques

Le calcul des statistiques permet d'optimiser les requêtes et les filtres sur le fichier de données. Ce calcul prend en compte uniquement les enregistrements actifs. Ce calcul peut également être obtenu par la fonction <Source>.StatCalcule.
Remarque : Pour que le calcul des statistiques soit efficace, il est nécessaire de réaliser ce calcul sur tous les fichiers de données (par exemple dans le cas d'une requête multifichier).

Répertoire des fichiers temporaires

Pendant la ré-indexation, des fichiers temporaires peuvent être créés. Par défaut, ces fichiers sont créés dans le répertoire temporaire de Windows ou dans le répertoire courant si il n'y a pas assez de place.
La variable H.RépertoireTemporaire permet de paramétrer le répertoire utilisé pour stocker ces fichiers temporaires. Cette variable est conseillée notamment lors de la ré-indexation de fichiers de données de taille très importante.
HFSQL Client/Serveur Le répertoire utilisé pour stocker les fichiers temporaires sur le serveur peut être défini :

Gestion des alphabets non latins

Pour modifier l'alphabet utilisé pour les recherches, les tris :
  1. Spécifiez l'alphabet à utiliser avec la fonction ChangeAlphabet.
  2. Ré-indexez le fichier de données avec la fonction <Source>.Réindexe. Utilisez la constante hChangeAlphabet pour prendre en compte l'alphabet spécifié avec la fonction ChangeAlphabet.
Pour plus de détails sur la gestion des alphabets non latins dans les fichiers de données, consultez Gérer des alphabets spécifiques dans des fichiers de données.

Droits d'accès au fichier de données

La ré-indexation provoque la recréation du fichier de données sur disque. Dans un système d'allocation gérant les droits au niveau des fichiers (NTFS, etc.), le fichier de données après ré-indexation aura donc les droits du répertoire auquel il appartient.
Si avant la ré-indexation, le fichier de données avait des droits particuliers différents de ceux du dossier, il est nécessaire de les redéfinir au niveau de Windows après la ré-indexation.

Cas particulier : Fichiers corrompus après reboot ou erreur fatale du poste

Lors d'un redémarrage inopiné du poste, les fichiers de données peuvent être corrompus. Dans ce cas, les fichiers de données contiennent des données qui ne correspondent à rien (par exemple caractères illisibles dans les données). Pour corriger ce problème :
  1. Effectuez une ré-indexation avec suppression.
  2. Libérez les enregistrements en transaction avec la fonction <Source>.TransactionLibère.
  3. Supprimez les enregistrements incorrects à l'aide de WDMAP.
Composante : wd300hf.dll
Version minimum requise
  • Version 25
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 20/06/2023

Signaler une erreur ou faire une suggestion | Aide en ligne locale