Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
App. WinForms / WPF .NET
[VB.NET] Consigli su miglioramento velocità lettura e caricamento dati...
martedì 05 aprile 2011 - 17.53
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
VB.NET
|
.NET 2.0
|
Windows XP
|
Visual Studio Express
|
SQL Server Express
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
mar 5 apr 2011 - 17:53
Salve a tutti, ho un server sql express 2008 r2 che gira su un PC core 2 con 4gb e mi fa da server SQL. Ho un programma che utilizza i dati presenti in uno dei database nella macchina e li carica in un dataset con diciamo 20 tabelle, 3 di esse hanno circa 2000 row l'una mentre le altre sono delle sottotabelle collegate a una delle 3 mediante relazione 1-molti mediamente andiamo intorno alle 200 row ogni tabella.
All'avvio del form lancio una sub che mi carica e binda il dataset a svariati controlli nel form principale. L'operazione di caricamento dati sui pc più recenti ci impiega diciamo 2 secondi mentre su computer collegati ad un altra sede ma tramite connettività 10mb ci impiega anche 7 o 9 secondi la stessa procedura e tutto mi si freeza aspettando il termine di detta operazione. C'è qualche procedura per ottimizzare il tempo di caricamento dei dati nel dataset ?
Sicuramente sbaglio io ma ad esempio ogni volta che l'operatore esegue un update dei dati al termine del salvataggio lancio un refresh del dataset per avere i dati più aggiornati (ad esempio elaborati magari anche da altre persone in modo da gestire la concorrenza ottimistica) e visto che le procedure di update le eseguo tramite stored procedure parametrizzate mi domandato se invece di eseguire un refresh del dataset non fosse più logico rieseguire un select nella stored procedure dopo l'operazione (9 secondi ogni volta è una tragedia ..) ?
Un esempio di stored che uso attualmente è questa:
CREATE PROCEDURE [dbo].[spUpdateCommFiles]
(
@pr_IdFiles INT,
@pr_IdVer int,
@pr_NomeFiles varchar(255),
@pr_LinkFiles varchar(1024),
@pr_DataImport datetime,
@pr_NotaFiles varchar (255),
@Original_pr_IdFiles int,
@original_ts timestamp,
@ts timestamp output
)
AS
begin
SET NOCOUNT OFF;
UPDATE [tVerPrevCommFiles] SET
[pr_IdVer]= @pr_IdVer,
[pr_NomeFiles] = @pr_NomeFiles,
[pr_LinkFiles] = @pr_LinkFiles,
[pr_DataImport] = @pr_DataImport,
[pr_NotaFiles]=@pr_NotaFiles
WHERE (([pr_IdFiles] = @Original_pr_IdFiles) AND ([ts] = @Original_ts));
IF @@rowcount <> 0
SELECT @ts = ts FROM tVerPrevCommFiles WHERE (pr_IdFiles = @pr_IdFiles)
END
in essa prelevo come parametro di output solo il timestamp ma dovrei mettere anche tutti gli altri parametri come parametri di output ???
Spero di essere stato chiaro e spero di ricevere qualche consiglio (non di cambiare rete perchè non è fattibile al momento e poi non è solo quello, volevo capire come fare per ottimizzare i tempi)
Ho letto circa il threading ma non ne ho capito molto sinceramente e per un progetto di tale entità non so se vale la pena complicarsi la vita così tanto.
Grazie a tutti !
niccord
Profilo
| Newbie
12
messaggi | Data Invio:
mar 5 apr 2011 - 23:09
Ciao,
non conosco nessun modo per velocizzare il caricamento dei dataset.
Potresti migliorare l'accesso ai dati tramite l'aggiunta di indici alle tabelle interrogate e scrivendo query che facciano lavorare meno il db.
Se non l'hai già fatto, prova a utilizzare gli strumenti per l'ottimizzazione guidata al database.
Così, intanto, invece di 9 secondi ce ne metterà 5..che non è molto, ma è un inizio.
plaguebreath
Profilo
| Junior Member
115
messaggi | Data Invio:
mar 5 apr 2011 - 23:45
Grazie per la risposta, non è un problema di database sicuramente, non tratto dati pesanti con campi byte o immagini, e 2000 righe non mi sembrano valori esorbitanti, ho letto che query di select per 27000 riga ci stanno tipo 1 secondo. Secondo il mio modesto parere ci sono trucchi per migliorare il caricamento del dataset ma purtroppo non conoscendoli domando qui ;)
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !