DOCUMENTATION EN LIGNE
DE WINDEVWEBDEV ET WINDEV MOBILE

Aide / WLangage / Gestion des bases de données / HFSQL
  • Présentation
  • Données sur un serveur Windows
  • Performances constatées
  • Explication résumée du mécanisme du verrou opportuniste de Windows
  • Conseils pour accélérer les applications
  • Version des systèmes d'exploitation des postes client
  • Vérification régulière du réseau
  • Consultez la base de connaissance de Microsoft
  • Attention aux écrans de veille
  • Attention aux antivirus
  • Vérification des applications, cas d'erreurs constatés
  • PC Soft peut vous aider à optimiser
  • Paramétrage d'un réseau
  • De multiples paramètres
  • Cas fréquent des cartes réseau
  • Moteur HFSQL en technologie Client/Serveur
  • Annexe
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
HFSQL en mode réseau sur un serveur Windows NT4/2000/XP/2003
HFSQLDisponible uniquement avec ce type de connexion
Avertissement
A partir de la version 22, cette page de documentation est obsolète et concerne des systèmes qui ne sont plus supportés.
Présentation
La vitesse d'accès à des données en réseau dépend d'un très grand nombre de facteurs (repris dans la partie : "Réseau : De multiples paramètres").
Le facteur le plus important est bien sûr le poste serveur et surtout son système d'exploitation. Il faut donc s'assurer que le système d'exploitation du serveur est bien à jour.
Certains utilisateurs de WINDEV constatent que l'utilisation de HFSQL en réseau sur un serveur Windows produit des performances différentes par rapport à d'autres serveurs. Ce document explique les différences qu'il est possible d'observer sur un serveur Windows, en fonction du paramétrage du serveur et de la programmation utilisée.
Cette différence de performances est constatée avec HFSQL réseau dont les performances sont liées à la gestion réseau du serveur utilisé, mais n'est pas constaté avec HFSQL Client/Serveur qui gère et optimise lui-même les accès concurrentiels et les caches mémoires.
Données sur un serveur Windows
Afin de vérifier qu'un serveur Windows est à jour, il faut s'assurer qu'un service pack récent est appliqué. Soit, au 01/09/2005, le service pack 6 pour Windows NT4, le service pack 4 pour Windows 2000, et la version finale de Windows 2003.

Performances constatées

Voici un tableau récapitulatif des performances constatées de HFSQL en mode réseau avec un serveur Windows par rapport à HFSQL avec une autre type de serveur :
HFSQLServeur WindowsAutre serveur (Novell, Linux, ...)
Mono utilisateurMécanisme spécifique du système qui effectue une optimisation supplémentaire.Performances optimales de HFSQL.
Multi-utilisateur en lectureMécanisme spécifique du système qui effectue une optimisation supplémentaire.Performances optimales de HFSQL.
Multi-utilisateur en écriture/blocagePerformances optimales de HFSQL.Performances optimales de HFSQL.
Client/Serveur (mono ou multi-utilisateur)Mécanisme spécifique du moteur HFSQL qui effectue une optimisation supplémentaire.Serveur Linux uniquement : Mêmes optimisations que pour les serveurs Windows
Note aux utilisateurs de Hyper File 5.5 : Hyper File 5.5 est dans tous les cas moins rapide que HFSQL Classic.

Explication résumée du mécanisme du verrou opportuniste de Windows

Le système de gestion des fichiers des serveurs Windows varie en fonction des accès aux fichiers. Un mécanisme important des serveurs Windows est le "verrou opportuniste" (ou "opportunistic Locking"). Ce mécanisme est propre aux serveurs Windows et est totalement indépendant de WINDEV et de HFSQL. Depuis Windows NT 4, service Pack 5, ce mécanisme de "verrou opportuniste" fonctionne obligatoirement pour les serveurs Windows.
Voici une rapide explication du "verrou opportuniste" à travers un exemple :
Un poste client ouvre un fichier présent sur un serveur Windows. Le mécanisme du verrou opportuniste de Windows rapatrie tout ou partie du fichier dans le cache local du poste client. Les accès suivants au fichier n'utilisent plus du tout le réseau, mais utilisent le cache local sur le poste client. Les accès sont donc plus rapides, par contre les données du cache pourraient être différentes de celles du serveur. N postes clients peuvent faire cette manipulation, le mécanisme est identique : chaque poste client rapatrie tout ou partie du fichier en local.
Si un poste client écrit (ou bloque) dans ce même fichier, le serveur prévient tous les clients de désactiver leurs caches locaux afin d'assurer l'intégrité des données. Les prochains accès au fichier par les postes clients s'effectuent via le réseau. La vitesse d'accès devient celle du réseau (plus lent). Les verrous opportunistes sont réactivés uniquement si toutes les applications qui utilisent le fichier referment ce fichier.
Ce mécanisme n'a pas donc aucune influence sur les performances de HFSQL Client/Serveur étant donné que seul le moteur de HFSQL qui se trouve sur le serveur accède aux données.
Le mécanisme de verrou opportuniste de Windows ne permet donc d'optimiser que les accès réseau en mode "client unique" ou en mode "clients multiples mais en lecture seule".
Il est important de comprendre que l'accès n'est pas "plus lent" en mode multi-utilisateur, mais que c'est l'accès en mode "mono utilisateur" qui est optimisé par les serveurs Windows récent !
Il est tout à fait normal de constater des différences de performances dès la seconde connexion en mode modification. Notez que les performances, pour un réseau correctement dimensionné, seront identiques pour 2 ou 50 postes !
Les performances sont alors similaires aux réseaux utilisant d'autres logiciels serveurs : Linux, Novell. C'est le mécanisme de gestion du verrou opportuniste de Windows qui implique cela.
Note : le test professionnel des performances d'une application multi utilisateur s'effectuera bien entendu en mode multi utilisateur sur des données réelles. On comprend aisément qu'un test mono utilisateur produira des performances optimisées mais qui ne correspondent à aucune réalité. Le type d'accès en mode mono utilisateur peut masquer des erreurs de conception de l'application. (voir plus loin dans ce document).
Conseils pour accélérer les applications

Version des systèmes d'exploitation des postes client

Les postes clients doivent impérativement être dotés d'une version de Windows appropriée. Un seul poste client mal configuré ou avec un système d'exploitation qui n'est pas à jour peut influencer de façon significative les performances de tous les utilisateurs d'une application réseau. Ce n'est pas le cas avec une base HFSQL Client/Serveur, les accès aux données étant réalisés par le moteur HFSQL. Il est toutefois conseillé de maintenir à jour les postes clients des mises à jour du système d'exploitation dans tous les cas pour le bon fonctionnement général des applications.
  • Windows 98 : Seconde Edition (SE) nécessaire
  • Windows Millenium : Service Pack 1 nécessaire
  • Windows NT4 : Service Pack 6 nécessaire
  • Windows 2000 : Service Pack 4 nécessaire
  • Windows XP : Service Pack 2 nécessaire
Note : Pour connaître la version de Windows et le service pack installé sur un poste, dans le menu "Démarrer .. Exécuter" de Windows, tapez "winver".

Vérification régulière du réseau

La vérification du réseau (et surtout du serveur) est indispensable lors de la mise en place de l'application. Il ne faut toutefois pas négliger des vérifications régulières suite aux modifications du réseau (ajout de postes, changement de câbles, ...).
N'hésitez pas à faire intervenir un spécialiste du réseau ou du système utilisé afin qu'il vérifie votre configuration.

Consultez la base de connaissance de Microsoft

De nombreux phénomènes qui ont une influence sur les performances sont liés au système d'exploitation.
Etant donné que les applications WINDEV fonctionnent sous Windows, il est important de connaître les phénomènes publiés par son éditeur.
Microsoft met à disposition sur son site Internet une base de connaissance avec des articles techniques sur les phénomènes connus. (http://support.microsoft.com/support/search Attention pas de "www")

Attention aux écrans de veille

N'activez pas d'écrans de veille sur les serveurs. Certains écrans de veille consomment pratiquement 100% des ressources du serveur lorsqu'ils sont actifs, et rendent le serveur quasiment inopérant pour les opérations pour lesquelles il est prévu.

Attention aux antivirus

Les anti-virus sont une cause importante de ralentissement des accès aux fichiers. En cas d'utilisation d'un anti-virus, il faut demander à exclure de la vérification les fichiers avec .FIC, .NDX et .MMO comme extension. Si des ralentissements sont constatés alors qu'un anti-virus est actif, désactivez temporairement cet anti-virus et vérifiez à nouveau les performances. Attention de bien vérifier l'anti-virus du serveur, mais aussi de chacun des postes clients. Un anti-virus sur un seul poste peut diminuer les performances de tout le réseau.
ATTENTION : Si un anti-virus est désactivé, il doit être réactivé après les tests et après avoir vérifié et/ou modifié ses paramètres.

Vérification des applications, cas d'erreurs constatés

Une application qui est destinée à fonctionner en réseau doit être testée en réseau dans des conditions similaires à son utilisation réelle (avec des accès concurrentiels et des fichiers de taille réelle).
Les performances d'un code qui s'exécute en local ou en réseau "mono utilisateur" peuvent être totalement différentes en utilisation réelle sur réseau multi-utilisateurs.
Voici une liste non exhaustive d'erreurs souvent trouvées dans des applications existantes. Tous ces cas sont issus d'une expérience réelle et ont été constatés.
1. 90% des cas de lenteurs sont dus à des clés inadaptées aux traitements :
Résolution : Définir sous l'analyse les clés adaptées
Dans vos applications, vérifiez les critères des filtres, vues et requêtes. Afin d'obtenir de bonnes performances en exécution, les fichiers doivent avoir les clés et clés composées adaptées. Les clés nécessaires pour obtenir de bonnes performances sont fonction des conditions des tris. Un examen de l'analyse, des filtres, vues et requêtes doit être fait pour déterminer les meilleurs clés.
Dans ce but, WINDEV vous propose un optimiseur de requêtes qui analyse vos requêtes et recherche les clés les plus adaptées à leurs fonctionnements. Pour optimiser une requête, lorsqu'une requête est ouverte sous WINDEV, sous le volet "Requête", dans le groupe "Analyser", cliquez sur "Optimiser la requête".
Il s'agit d'un mécanisme automatique qui donne de bons résultats. Toutefois dans le cas de requêtes complexes ou avec des paramètres optionnels multiples, cette option ne remplace pas la perspicacité d'un spécialiste de base de données.
Il est difficile de spécifier le gain de performance qui peut être obtenu par l'ajout de clés adaptées, car les situations peuvent être très différentes. Ce gain peut varier d'un temps de traitement accéléré de 10% jusqu'à des temps de traitements pisés par 100 voire plus.
Attention : si le test de performance d'une application multi-utilisateur est effectué en mode mono-utilisateur, les résultats du test sont évidemment irréalistes. Bien évidemment une application doit être testée dans sa configuration d'utilisation.
2. Les fichiers ne sont pas "optimisés"
Résolution : Lancer WDOptimiseur ou prévoir un traitement dans l'application (HRéindexe ou HStatCalcule)
Des fichiers pour lesquels les calculs de statistiques (ou re-indexation) ont été effectués récemment seront automatiquement plus performants. Cette opération ne nécessite aucun changement dans l'application. Mais des opérations de maintenance régulières sont impératives si vous désirez conserver des accès rapides à une base de données. Pour optimiser l'accès aux fichiers, utilisez l'outil WDOptimiseur fourni en standard avec WINDEV, ou une des fonctions HStatCalcule, HRéindexe.
3. Utilisation abusive de HCréationSiInexistant
Résolution : Ne pas utiliser HCréationSiInexistant lorsque ce n'est pas nécessaire, et utiliser la constante hOuvertureDifférée lorsque que HCréationSiInexistant est nécessaire.
Il est fréquent de retrouver dans des applications une instruction HCréationSiInexistant("*") ou une série de HCréationSiInexistant dans le code d'initialisation du projet. Cette fonction effectue un grand nombre de vérifications et de recherches, et utilise donc du temps machine. Pour éviter ce temps, vous pouvez demander un contrôle différé en utilisant la constante hOuvertureDifférée avec la fonction HCréationSiInexistant. Mieux encore, vous pouvez utiliser cette instruction uniquement pour les fichiers susceptibles d'être supprimés ou recréés.
Ce changement peut faire gagner plusieurs dizaines de secondes au lancement d'une application si elle manipule un grand nombre de fichiers.
4. Initialisations sans raison ou mal placées
Résolution : Supprimer les initialisations inutiles, ou les déplacer à l'endroit approprié.
Lorsque vous initialisez des fenêtres qui contiennent plusieurs plans ou plusieurs onglets, n'initialisez pas tous les plans et les onglets dès l'ouverture de la fenêtre. N'exécutez les vues et requêtes des autres plans qu'au moment où l'utilisateur y accède.
Par contre, utilisez la fonction HOptimiseRequête dès le code d'ouverture de la fenêtre pour que l'exécution ultérieure de ces requêtes soit encore plus rapide.
5. Sources de données dynamiques (non définies sous l'éditeur de requêtes ou d'analyse) mal définies
Résolution : Utiliser le type "Source de Données" pour chaque source de données dynamique.
Lors de la création de vues par la fonction HCréeVue ou de requêtes par la fonction HExécuteRequêteSQL, il faut indiquer un nom. Ce nom permet ensuite de manipuler la source de données (vue ou requête) comme un fichier. Pour récupérer le contenu des rubriques, il suffit de faire NomVue.NomRubrique ou NomRequete.NomRubrique.
Sous l'éditeur de code NomVue (ou NomRubrique) n'est pas reconnu. Pour que le compilateur du WLangage reconnaisse vos vues et requêtes il est nécessaire de les déclarer. Nous vous conseillons d'utiliser le type de variable "Source de Données" pour les déclarer.
6. Utilisation d'indirection sur rubrique, sans en préciser le type
Résolution : Préciser le type de l'indirection
Il est possible d'utiliser l'indirection (les accolades { } ) pour construire dynamiquement un nom rubrique (ou de variable...). Les indirections permettent de créer des codes génériques, mais ces codes sont un peu plus lents. Ainsi un code qui fait des lectures, modifications ou ajouts et qui utilise l'indirection peut être plus lent dans la résolution des indirections que dans les opérations réelles sur les fichiers HFSQL. Afin d'accélérer les traitements qui utilisent l'indirection, il est possible de spécifier le type d'indirection. Pour plus de détails, consultez Opérateurs d'indirection.
Exemple :{NomFichier+"."+NomRubrique,indRubrique}=5
7. Utilisation de l'analyseur de performances pour détecter vos cas de ralentissement
Résolution : Améliorations du code exact qui est jugé trop lent
Il existe d'autres types d'erreur à ne pas commettre (parcours ou initialisations inutilement multiples, ...), ou d'autres types d'optimisation possible (il est par exemple fortement recommandé d'utiliser HFSQL Client/Serveur sur un réseau lent ou avec un accès ADSL).
Chaque cas est un cas particulier, mais la règle générale est que lorsqu'une lenteur est détectée, celle-ci peut être éliminée en recherchant l'origine.
L'analyseur de performances fournit avec WINDEV est un outil formidable qui permet de déterminer avec précision les codes qui prennent le plus de temps.

PC Soft peut vous aider à optimiser

Si vous désirez que PC SOFT étudie une application et son code source, deux solutions sont envisageables :
  • Souscription d'un contrat Assistance Directe (détails et tarifs disponibles sur https://www.pcsoft.fr/ad/index.html)
  • Intervention sur site d'un ingénieur spécialisé de PC SOFT.
N'hésitez pas à contacter le service commercial de PC SOFT afin de recevoir une proposition commerciale.
Notez toutefois que les interventions de PC SOFT ne concernent que les logiciels édités par PC SOFT, et que nos ingénieurs n'interviennent pas dans les configurations réseau ou paramétrages de Windows par exemple (même si leur expérience leur permet souvent de donner des conseils pertinents dans le domaine de l'utilisation d'un réseau donné).
Paramétrage d'un réseau

De multiples paramètres

Un réseau est constitué d'un grand nombre d'éléments, et chacun de ces éléments peut être à l'origine de ralentissements ou d'un dysfonctionnement du réseau. Exemples :
  • 2 cartes TCP/IP avec la même adresse,
  • Pilote de carte vidéo entrant en conflit,
  • Pilote d'imprimante entrant en conflit,
  • Type et vitesse du disque dur,
  • Serveur de réseau présentant des bugs (voir sur le site de l'éditeur la présence de service pack à installer),
  • Les performances d'un réseau à 100 mégas bits peuvent être totalement effondrées par une simple carte d'un PC à 10 mégabits,
  • La présence de perturbations électromagnétiques à proximité des câbles (machine outil, transformateur, aimant, ...)
  • etc.
Chaque serveur réseau à des incompatibilités (cartes réseau, versions de Windows, imprimantes ...), vérifiez- les régulièrement sur le site de l'éditeur de votre serveur.
En cas de doutes, faites appel à une société spécialisée, agréée par l'éditeur de votre serveur de réseau.
Un réseau ne s'installe pas comme un PC isolé, cela demande des compétences particulières.

Cas fréquent des cartes réseau

Certaines cartes réseau sont beaucoup plus performantes que d'autres cartes, il est donc important de vérifier les cartes réseau installées.
Par ailleurs les cartes réseau utilisent des drivers pour lesquels des mises à jour importantes peuvent exister. Consultez le site de leurs constructeurs.
Un pilote trop ancien peut être à l'origine de ralentissement important (fréquemment un facteur 2).
Exemple des cartes 3 COM 3C590 Article Microsoft Q139731 : Network Errors Using 3COM 3C590 NIC In Windows NT
Moteur HFSQL en technologie Client/Serveur
Comme indiqué dans plusieurs points de ce document, afin de s'affranchir de certaines contraintes liées à l'installation du réseau, nous vous rappelons qu'un moteur HFSQL Client/Serveur pour Windows et pour Linux est disponible gratuitement avec WINDEV.
Ce moteur Client/Serveur utilise (entre autre) de nombreuses nouvelles optimisations pour obtenir des résultats toujours plus rapides, dans toutes les situations.
Annexe
Ce document est fourni à titre purement informatif et n'est pas contractuel. Ces informations sont vérifiées à la date de rédaction de ce document (16/09/2005).
En raison de l'évolution permanente des logiciels, aussi bien de PC SOFT que de Microsoft, ces informations peuvent évoluer à tout moment.
Version minimum requise
  • Version 12
Documentation également disponible pour…
Commentaires
Cliquez sur [Ajouter] pour publier un commentaire

Dernière modification : 13/06/2023

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