Nous avons donc une base de données interne à l'entreprise, le type habituel de choses: gestion des clients, appels téléphoniques, contrats de vente et accords / schémas clients.
Il s’agit d’un serveur Access 2000 et d’un serveur SQL Server 2000 Standard. Un serveur unique, double Xeon à 3,2 GHz, 2 Go de RAM, Windows Server 2003, reçoit environ 40% de la charge du processeur toute la journée, répartie sur les 4 cœurs visibles du système d'exploitation (HT).
La base de données back-end est mal conçue et a connu une croissance organique de plus de 10 ans, maintenue par des personnes peu qualifiées. Il est mal normalisé et certains des problèmes les plus évidents concernent les tables avec des dizaines de milliers de lignes sans clé primaire ni index, qui sont également très utilisées dans les jointures multi-tables pour certaines des parties les plus utilisées du système (par exemple, une gestionnaire d'appels qui se trouve sur le deuxième moniteur de tout le monde pendant 8 heures par jour et lance une grosse requête inefficace toutes les quelques secondes).
Le front-end n’est pas bien meilleur, c’est le fouillis typique de centaines de formulaires, de requêtes sauvegardées imbriquées, de code SQL incorporé mal écrit dans le code VBA, de dizaines de "bizarreries", etc., et chaque fois qu’une modification est apportée, quelque chose de non lié semble se briser. Nous avons opté pour une BMD qui fonctionne "assez bien" et avons maintenant une politique de non-changement à ce sujet, car nous n'avons pas de poids lourd Access à l'interne (et ne prévoyons pas en engager un non plus).
La société est en train de croître lentement, avec un nombre croissant de clients, d'appels, etc., ainsi qu'une augmentation modeste du nombre d'utilisateurs simultanés, et les performances se sont nettement dégradées ces derniers temps (attente de passer d'un formulaire à l'autre, attente de listes à remplir, etc.). )
Perfmon dit:
- Transferts de disque par seconde: entre 0 et 30, moyenne 4.
- Longueur de la file d'attente actuelle: oscille autour de 1
Le profileur de SQL Server voit des centaines de milliers de requêtes chaque minute. L'utilisation du processeur sur les clients est pratiquement nulle, ce qui indique qu'il attend que les requêtes côté serveur soient exécutées. J'ai chargé cette charge de travail via l'assistant de paramétrage du moteur DB, appliqué ses suggestions à une sauvegarde test, mais cela ne faisait pas vraiment une grande différence.
En passant, nous avons un mélange de 100 Mo et d’Ethernet gigabit, le tout sur un seul sous-réseau, 40 utilisateurs ISH sur deux étages.
À la question.
À mon avis, nous avons deux choix pour résoudre / améliorer cette situation.
- Nous pouvons le supprimer et le remplacer par un tout nouveau système de gestion de la relation client, sur mesure ou en partie sur mesure.
- Nous pouvons prolonger la durée de vie de ce système en y insérant du matériel.
Nous pouvons construire un système Intel i7 avec des performances incroyables pour un ordre de grandeur moins coûteux que le remplacement du logiciel.
Lorsqu'un nouveau système est finalement développé, il peut être hébergé sur cette boîte, évitant ainsi le gaspillage de matériel. Un nouveau système de gestion de la relation client est de plus en plus utilisé, et cela ne se produira pas avant au moins un an.
Toute pensée sur cette situation, surtout si vous avez été ici vous-même, serait très appréciée.
Merci