Newsgroup: it.comp.lang.visual-basic
Titolo: velocità della rete usando un programma

Scritto in VB6 , archivi in access 2000 , utilizza ado 2.8
La rete LAN è a 100 MB , spostando un file via rete raggiungo la velocità di 
85 MB ( misurati con il programmetto NETMETER ) , eppure quando uso il 
software in oggetto ( gestionale di fatturazione ) la velocità max è di 31 
MB .
Ecco perchè il gestionale è lento nel caricare le maschere e le form e le 
anteprime etcetec..
Cosa si può fare ?
ciao e grazie 

 ha scritto nel messaggio 
news:43c93547$0$1067$4faf...@reader4.news.tin.it...

Dipende da mille cose.
Cosa significa che "uso il software in oggetto ( gestionale di 
fatturazione ) la velocità max è di 31 MB"???
Ti metti a spostare il file ogni volta che parte il programma?

gabriele wrote:

Banalmente, la cosa più veloce che mi viene di consiglarti è quella di 
upgradare la tua rete a 1 Gbit.
Infatti, sebbene questo suggerimento possa essere a prima vista un po' 
"esagerato", bisogna tener conto che il costo di schede e switch a 1Gbit 
sono oramai più che accessibili.
Credimi, potrebbe essere la soluzione più rapida ed efficace per risolvere 
il tuo problema...
Non hai specificato se disponi dei sorgenti del programma, come accede ai 
dati, e mille altre cose riguardo l'architettura/funzionalità del 
software...
Sicuramente ti posso dire che passando a MSDE (o mySQL, tanto per fare un 
nome non MS) sicuramente incrementerai le prestazioni, ma bisogna vedere 
se e quali modifiche devi apportare al tuo codice (sempre che tu sia in 
possesso dei sorgenti) affinchè funzioni correttamente.
Insomma, dalle indicazione che ci hai fornito, l'upgrade della rete ad 1 
Gbit mi pare la cosa più sensata da consigliarti.
Ciao
-- 
Gianluca Cannalire
Microsoft MVP/MCP - Visual Basic
http://www.visual-basic.it
http://community.visual-basic.it/gianluca

gabriele ha pensato forte :

Se l'applicativo viene disegnato per essere usato con Access in rete, 
occorre pensare tutta la struttura del db, le query, ecc..., in tale 
ottica.
Questo significa che occorre spalmare su più tabelle i dati, 
rinunciando a volte ad una bella normalizzazione, oppure usare 
massicciamente gli indici, per evitare che ogni query debba scandirsi 
una quantità infinita di righe.
Il fatto di essere lento nel caricare una maschera, o una anteprima, 
significa, prima ancora che un vero e proprio problema di rete (che 
puoi anche portare a 1Gbps, ma fra un anno, col db che è cresciuto, 
sarai di nuovo da capo), che il software non è stato pensato 
correttamente.
Certo, se uno prima disegna il db, e *poi* ragiona in termini di 
performance e di rete, con Access inciampa in questi problemi.
Ma presumo che si tratti di un sw per gestire roba di poco conto, 
perchè le cose serie si fanno sviluppare seriamente.
Ciao
Alberto
-- 
A questo punto hanno trovato un muro,
un muro duro, molto molto duro,
che siamo noi.

 Ti metti a spostare il file ogni volta che parte il programma?
no , lascio acceso NETMETER , che mostra che la velocità max della rete 
DURANTE l'utilizzo in rete del gestionale
è appunto di soli 31 MB .
Il programma in pratica non è in grado di sfruttare la velocità di rete 
disponibile .
Il gestionale usa MS JET come motore , architettura file-shared.
Grazie 

 performance e di rete, con Access inciampa in questi problemi.
in effetti era studiato per lo stand alone , ma poi lo si vende per le reti 
.
Quindi è il gestionale che non è in grado di sfruttare i 100 MB disponibili 
.
Ciao 

Gabriele ha usato la sua tastiera per scrivere :

No, non hai capito.
Siccome con db filebased ogni query presuppone un massacrante lavoro su 
disco e su rete, tu non vedi cosa in effetti sta avvenendo.
Cioè, magari tu stai monitorando la banda in entrata nel client, e 
invece Jet in quel momento sta scrivendo.
Oppure è il disco del server che non è velocissimo.
Oppure è molto frammentato.
Oppure, semplicemente, le richieste effettuate dal client richiedono 
molta CPU al client stesso.
I sistemi DB-Server, anche quelli gratuiti come MSDE, hanno, oltre a 
tanti altri, anche il vantaggio che il traffico di rete è costituito 
*esclusivamente* dalla stringa di interrogazione inviata dal client 
(pochi byte) e dallo streaming dei risultati inviato dal server. Ma, 
attenzione, solo dei risultati. Cioè, se ad esempio tu vuoi il totale 
delle vendite, in rete arriva soltanto uno stream di qualche byte con 
il totale stesso. Con Access, invece, il totale viene calcolato dal Jet 
del client, che quindi ha bisogno di avere *tutta* la tabella in Ram, e 
quindi deve trasferirsi tutto, e mentre fa questo deve pure scrivere 
sul server che sta facendo determinate cose, quindi deve anche andare 
in scrittura, ecc...
Ma una vera analisi la si potrebbe fare solamente confrontando i tempi 
di esecuzione fra un sw client installato sul server stesso, e un sw 
client installato su un PC Client.
Il fatto che un singolo pc sia lento potrebbe dipendere da molte cose.


 perchè le cose serie si fanno sviluppare seriamente.
Ecco perchè il mio ragionamento sull'upgrade della rete ;)
