2009-10-23 5 views
2

J'exécute une simple requête contre SQL Server 2005:SNIReadSync s'exécutant entre 120 et 500 ms pour une requête simple. Qu'est-ce que je cherche?

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

Chaque fois que je profil avec dotTrace 3.1, elle prétend que la méthode SNIReadSync prend entre 100 - 500 ms.

Quel genre de choses dois-je rechercher pour obtenir ce temps?

Merci!

Répondre

1

Je n'ai pas testé, mais je me demande si vous avez le même problème si vous avez utilisé un TransactionScope avec les options de IsolationLevel.ReadUncommitted. Vous devriez encapsuler votre ensemble complet d'appels et cela devrait annuler le besoin de cette déclaration. Je me rends compte que cette déclaration n'est pas votre préoccupation fondamentale, mais en général.

Une autre chose que vous pouvez faire est de créer une classe DBConnectionScope (ou de tirer parti de la classe d'un fournisseur de confiance) et de réduire le nombre total de connexions ouvertes.

+0

Cort nous avons effectivement identifié cela comme une solution au problème. Une autre possibilité consistait à ajouter la requête set level level à toute requête exécutée, car peu importe si la requête est exécutée par lots séparés ou non. – Mike

+0

Il existe également une autre possibilité: Isolation de cliché. – Mike

0

Assurez-vous que le regroupement de connexions est activé ou que vous recevrez une pénalité importante chaque fois qu'une connexion est ouverte. Dans votre chaîne de connexion, définissez Pooling = True ou supprimez toute référence à la mise en pool. Je crois que la valeur par défaut est activée.

Cela a résolu le problème pour moi. J'espère que ça aide pour vous et les autres.

+0

Oui, le regroupement de connexions est activé. J'ai pris quelques traces de profil en utilisant dotTrace dans notre pic sur un serveur aujourd'hui ... Et SNIReadSync semble être le plus gros monstre:) ... On dirait que l'implémentation d'un serveur de cache distribué pourrait aider. – Mike

Questions connexes