Domanda

Sto eseguendo una semplice query su SQL Server 2005:

protected static void InitConnection(IDbCommand cmd) {
        cmd.CommandText = "set transaction isolation level read uncommitted ";
        cmd.ExecuteNonQuery();            
    }

Ogni volta che profilo con dotTrace 3.1, afferma che il metodo SNIReadSync impiega tra 100 e 500 ms.

Che tipo di cose devo cercare per ridurre questo tempo?

Grazie!

È stato utile?

Soluzione

Non ho testato, ma mi chiedo se hai lo stesso problema se hai utilizzato un TransactionScope con le opzioni di IsolationLevel.ReadUncommitted. Dovresti incapsulare il tuo set completo di chiamate e questo dovrebbe annullare la necessità di questa affermazione. Mi rendo conto che questa affermazione non è la tua preoccupazione di base, ma in generale.

Un'altra cosa che puoi fare è creare una classe DBConnectionScope (o sfruttare una classe di un fornitore fidato) e ridurre il numero totale di connessioni aperte.

Altri suggerimenti

Assicurati che il pool di connessioni sia abilitato o riceverai una penalità significativa ogni volta che viene aperta una connessione. Nella stringa di connessione impostare Pooling = True o rimuovere qualsiasi riferimento al pool. Credo che il valore predefinito sia abilitato.

Ciò ha risolto il problema per me. Spero che sia d'aiuto per te e gli altri.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top