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
  • Versions précédentes
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 HVérifieIndex permet de vérifier régulièrement l'état du fichier d'index.
SI HRéindexe(UnFichier, hNdxNormal) = Vrai ALORS
	TableAffiche(TABLE_MaTable, taDébut)
FIN
Syntaxe
<Résultat> = HRéindexe([<Fichier de données> [, <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é.
<Fichier de données> : Chaîne de caractères optionnelle
Nom du fichier de données manipulé.
Si ce nom n'est pas spécifié, la fonction HRéindexe va manipuler le dernier fichier de données utilisé par la dernière fonction de gestion HFSQL (fonction commençant par la lettre H).
<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).
WINDEV Remarque : Avant de faire une réindexation des mémos, il est possible de vérifier régulièrement l'état des mémos grâce à la fonction HVérifieMémo.
<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.
Plus ce taux est important, plus l'index est dense et de petite taille. Dans ce cas, les parcours, recherches, filtres et requêtes seront plus rapides. Les ajouts d'enregistrements et les modifications d'enregistrements pourront être ralentis.
Plus ce taux est faible, moins l'index sera dense et plus sa taille sera importante. Dans ce cas, les parcours, recherches, filtres et requêtes seront ralentis. Les ajouts d'enregistrements et les modifications d'enregistrements seront plus rapides.
Attention : ce paramètre est utilisable uniquement sur les fichiers de données au format HFSQL.
Hyper File 5.5 Ce paramètre n'est pas utilisable.
Remarques

Conditions d'utilisation

  • La fonction HRéindexe permet de ré-indexer un fichier xBase.
  • La fonction HRé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).
WINDEVUniversal Windows 10 AppCode Utilisateur (MCU)Langage ExterneHFSQL 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).
WINDEVUniversal Windows 10 AppJavaCode Utilisateur (MCU)HFSQL 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.
WINDEV Une fenêtre apparaît indiquant que le fichier de données est en cours de ré-indexation (appelée aussi réorganisation). Cette fenêtre est affichée pendant toute la durée de la ré-indexation et ne peut être fermée. Une jauge de progression indique l'état de la ré-indexation.
Il est possible de personnaliser cette fenêtre et/ou de ne plus l'afficher. Pour plus de détails, consultez Gestion assistée des erreurs HFSQL.
Pour éviter les effets de clignotement, la fenêtre de ré-indexation s'affiche uniquement si la ré-indexation risque de durer plus de 2 secondes. Dans ce cas, cette fenêtre apparaît au bout de 0.7 secondes.
Remarque : la ré-indexation "à chaud" ne peut pas être effectuée si des enregistrements sont bloqués en lecture/écriture dans le fichier de données à ré-indexer. Si les enregistrements sont uniquement bloqués en écriture, la ré-indexation à chaud peut être effectuée.
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.

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 HStatCalcule.
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 HRé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 HTransactionLibère.
  3. Supprimez les enregistrements incorrects à l'aide de WDMAP.
WINDEV

Versions précédentes

Cette fonction remplace la fonction HRéindexe_55, conservée par compatibilité avec WINDEV 5.5.
Classification Métier / UI : Code métier
Composante : wd300hf.dll
Version minimum requise
  • Version 9
Documentation également disponible pour…
Commentaires
hTâcheDeFond incompatible avec hNdxCompactage
Impossible de supprimer les enregistrements inactifs en tâche de fond sur un serveur HFSQL, donc impossible à chaud sans bloquer les clients
RVN
03 jan. 2024

Dernière modification : 11/04/2024

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