Prestazioni Sqlserver

martedì 12 giugno 2007 - 10.33

Simon3 Profilo | Newbie

Salve a tutti, sto realizzando un miniprogrammino in c# e utilizzo un database sqlserver 2005 come fonte dati. Mi manca poco a finirlo e l'ho voluto testare su della macchine. Ho riscontrato essenzialemente due problemi:

1) Il primo è che il programma su di una macchina mi genera un'eccezione probabilmente dovuta alla mancata presenza di sqlserver installato. Quindi mi chiedevo come risolvere questo problema...Magari inserire nell'installer del programma il setup di sqlserver??? Non so prorpio.

2) Il secondo è che sulla macchina dove sqlserver è installato, le prestazioni del programma sono alquanto basse. In pratica gli eventi che generano una query sul db (stored procedure o no) vengono eseguiti lentamente...Come posso migliorare le prestazioni del programma, come posso velocizzare le connessioni al db..

munissor Profilo | Senior Member

Installare SQL server su qualsiasi macchina non è una buona idea...solitamente un database è condiviso tra più applicazioni, quindi avrai un server (con SQL server) e più client (senza SQL server) che si connettono al database remoto. Se necessiti ti un database sui singoli client usa il motore Jet (quello di access per intenderci) tramite Odbc se il database è piuttosto grosso. Se i dati sono molto pochi puoi utilizzare addirittura un DataSet.

Per il problema delle prestazioni innanzitutto devi individuare dove sta il problema: rete, client che elabora i risultati delle query in modo non efficiente, database mal ottimizzato (es:mancanza di indici) o stored procedures o query mal formulate... In base poi a dove pensi sia il problema puoi iniziare a ottimizzare..

Simon3 Profilo | Newbie

Il programma che ho creato dovrebbe girare lato client e non in rete con un server.. A tal proposito mi accorgo di aver sbagliato approccio utilizzando sqlserver 2005 . Siccome fin'ora non ho mai lavorato con database access, mi sapresti sare qualche dritta sul motore Jet (che non so cosa sia) o magari qualche url di riferimento da cui attingere materiale??
Per quanto riguarda le query mal formulate di cui parli ho dato un'occhiata...è tutto ok a parte gli indici che non so cosa siano..
Ho notato che nel momento in cui avvio l'applicazione, risutano essere lente le prime query al db. Poi successivamente le prestazioni non sono male. Come mai?? La metodologia che utilizzo è che per ogni query sul db apro e chiudo una connessione al db. E' giusto fare in questo modo??
Saluti

munissor Profilo | Senior Member

Per aumentare le performance con la connessione usa il pooling (c'è un parametro da impostare sulla stringa di connessione..) in modo che vengano aperte un certo numero di connessioni "in attesa" che vengono usate quando ce n'è bisogno... oppure visto che non hai ne problemi di rete, ne problemi a tenere una connessione attiva al server puoi creare una connessione e utilizzare sempre quella (ammesso che si possa fare, non so come si comporta se esegui più comandi sulla stessa connessione). Per quanto riguarda il motore Jet è il vecchio motore di access (per aprire i files *.mdb per intenderci). Poi utilizzare un database tramite Odbc, praticamente non viene creato un server, viene solo caricato il motore di database nel tuo processo. Se usi caratteristiche di SQL Server (es: trigger) perà non puoi usare Jet che è molto più limitato...
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 !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5