Quindi - abbiamo un database aziendale interno, il solito tipo di cose: gestisce i clienti, le telefonate, le offerte di vendita e gli accordi / schemi dei clienti.
È un front-end di Access 2000 e un back-end standard di SQL Server 2000. Server singolo, doppio Xeon 3.2GHz, 2 GB di RAM, Windows Server 2003, ottiene circa il 40% del carico della CPU tutto il giorno, distribuito sui 4 core visibili al sistema operativo (HT).
Il database di back-end è mal progettato e cresciuto organicamente in oltre 10 anni, gestito da persone poco qualificate. È mal normalizzato e alcuni degli ovvi problemi includono tabelle con decine di migliaia di righe senza chiave primaria o indice, che sono anche usate pesantemente nei join multi-tabella per alcune delle parti del sistema più utilizzate (ad es. applicazione per la gestione delle chiamate che si trova sul secondo monitor di tutti per 8 ore al giorno ed esegue una query inefficiente ogni pochi secondi).
Il front-end non è molto migliore, è il tipico pasticcio di centinaia di moduli, query salvate nidificate, SQL incorporato scarsamente scritto nel codice VBA, dozzine di "stranezze" ecc. E ogni volta che viene apportata una modifica, qualcosa di non correlato sembra rompersi. Abbiamo optato per un MDB che funzioni "abbastanza bene" e ora abbiamo una politica di non cambiamento in quanto non abbiamo pesi massimi di accesso internamente (e non abbiamo nemmeno intenzione di assumerne uno).
La società ora sta lentamente crescendo, aumentando il numero di clienti, chiamate ecc., Nonché un modesto aumento del numero di utenti simultanei e le prestazioni sono peggiorate notevolmente di recente (in attesa di spostarsi tra i moduli, in attesa di compilazione di elenchi, ecc. )
Perfmon dice:
- Trasferimenti del disco al secondo: tra 0 e 30, in media 4.
- Lunghezza corrente della coda del disco: circa 1
Il profiler di SQL Server vede centinaia di migliaia di query ogni minuto. L'utilizzo della CPU sui client è praticamente pari a zero, a indicare che è in attesa di eseguire query sul lato server. Ho trasferito questo carico di lavoro tramite DB Engine Tuning Advisor, ho applicato i suoi suggerimenti a un backup di prova, ma questo non ha fatto molta differenza.
A proposito, abbiamo un mix di 100 MB e Ethernet gigabit, tutto su una sottorete, 40 utenti ish su due piani.
Alla domanda
A mio avviso, abbiamo due opzioni per risolvere / migliorare questa situazione.
- Possiamo eliminarlo e sostituirlo con un sistema CRM completamente nuovo, su misura o in parte su misura
- Siamo in grado di prolungare la durata di questo sistema mandandoci l'hardware.
Siamo in grado di costruire un sistema Intel i7 con numeri di prestazioni folli per un ordine di grandezza in meno costi rispetto alla sostituzione del software.
Quando un nuovo sistema viene infine sviluppato, può essere ospitato su questo box, quindi non c'è spreco di hardware. Un nuovo sistema CRM continua a essere rimandato, spento e spento - non vedo che ciò accada per almeno un anno.
Qualsiasi pensiero su questa situazione, specialmente se sei stato qui da solo, sarebbe molto apprezzato.
Grazie