Newsgroup: it.comp.lang.delphi
Titolo: SQL Server 2000 e BDE ......... lentezza infinita

Salve a tutti!
Vi sottopongo la mia situazione, sconfortato da 1000 prove risultate
vane, nella speranza che qualcuno mi possa dare una mano.
Situazione:
1- Rete dedicata (al solo traffico generato dall'utilizzo della nostra
applicazione) parte in fibra, parte in ponte radio . Ci sono 15 client
collegati al server via fibra ottica (dedicata) ed altri 5 circa
collegati via ponte radio alla stesso server, mediante reindirizzamento
attraverso router cisco.
2- La rete in fibra (2 Mb) risponde ad un ping con valori < 1 ms, la
parte via ponte radio risponde con valori per lo più =1 ms che a volte
arrivano a picchi di 4 ms
2- Server Microsoft 2003 server Enterprise (in cluster) controller di
dominio.
3- Applicativo gestionale client/server sviluppato in Delphi 5
Enterprise che (ahimè) utilizza ancora il BDE ( versione  5.2)
4- L'alias BDE utilizza il driver "MSSQL" (per il collegamento diretto
a SQL Server) e non "SQL Server" perchè richiedeva il passaggio
attraverso ODBC.
5- Le impostazioni dell'alias BDE sono quelle di default, cosi come le
impostazioni di SQL Server e dei diversi client. Le impostazioni sono
comunque le STESSE su tutti i client.
6- L'applicativo al suo avvio effettua ovviamente un login e poi mette
a disposizione diverse funzionalità di gestione dati
Problema:
L'avvio dell'applicativo è istantaneo, così come il login.
Non appena si apre una query (per la precisione un Join) di circa 2000
record i tempi di apertura sono di 2 min e 19 secondi!!!
La cosa strana è che
1- I client collegati in fibra aprono la stessa query in 3 secondi
2- I client collegati in ponte radio, invece, ci mettono circa 2
minuti.
3- Ho notato che, dopo quest'attesa biblica, tutti i record della query
sono stati caricati sulla macchina client.
4- Per testare la rete ho provato a copiare (dai client via ponte
radio) alcuni file di varie dimensioni ed ho ottenuto ad es. una copia
di 10 MB in 9 secondi.
Ho l'impressione che ci sia qualcosa di sbagliato nelle impostazioni di
SQL Server o dell'alias BDE, ma non so più cosa fare perchè ho già
provato a modificare tutti i parametri modificabili senza alcun
risultato.
Non so se la rete ad 1 ms (con fluttuazioni a 2-3) può dare fastidio,
non so se dimensionando opportunamente i pacchetti di SQL Server si
può risolvere (ma non saprei comunque dove mettere le mani). Come
posso migliorare le prestazioni dei client via ponte radio????
Grazie a tutti coloro che potranno in qualche modo illuminarmi.
PS: Poichè dovrò comunque risolvere il problema in tempi piuttosto
brevi, se qualcuno dovesse leggere fra qualche tempo ed avesse un
analogo problema di "lentezza", conti pure su di me per ogni consiglio
ed informazione.

 posso migliorare le prestazioni dei client via ponte radio????
Bhe, se scpri che dipende da sql, si potrebbe buttare via i giocattoli e 
usare qualcosa di serio, almeno x vedere che accade.
Anche un semplice test con firebird io lo farei.
Se poi ce ne fosse il tempo installerei una oracle10g e farei un test 
con UN DATABASE.....
AS


Una prova con firebird la potrei pure fare, per togliermi lo sfizio  e 
sicuramente Oracle mi darebbe infinite soddisfazioni in più ma ormai la 
scelta (forse anche discutibile) del cliente è SQL Server 2000 Enterprise e 
con quella dobbiamo fare i conti.
Grazie mille, Alberto.

 con quella dobbiamo fare i conti.
Qui il discorso si complica.
Imho, il ns lavoro consiste anche nel far capire ai clienti che se 
devono fare cose serie i giocattoli devono DIMENTICARLI.
AS


Purtroppo (è la verità, credimi) l'effettiva natura del collegamento via 
ponte radio non mi è nota. So solo quello che il reparto  sistemisti mi ha 
detto (che è sostanzialmente ciò che ho scritto). A me hanno dato una serie 
di collegamenti di rete e basta.....
Per questo è difficile, per me, comprendere fino in fondo le problematiche 
che attanagliano il mio applicativo.... 


Bah, queste sono tutte illazioni. 
MSSQL è un ottimo database. 
Poi se si vuole sempre e solo spalare merda su MS questo è un altro
discorso....
-- 
Ore 18.30: premo invio.

di 10 MB in 9 secondi.
Prova a ripetere la query utilizzando prima una query lato client e
poi lato server, e vedi se le cose cambiano.
Prova a ripetere la query mettendo un "cache size" con un valore
maggiore o uguale al numero di record che ti verranno ritornati.
Prova a creare dei cursori forward only.
Logicamente tutte queste cose le puoi provare solo via ADO.
Ciao.


 tenermelo......
Posso dissentire un pochino ? Per l'epoca in cui è nato e come era fatto 
direi che non era male... soprattutto guardando quelle fantastiche 
tecnologie che usiamo oggi.
Ciao !