2008-12-17 10 views

Répondre

46

Il y a apparemment au moins deux connus inconvénients (potentiels) (de ce (1) Team blog):

  1. Évidemment, cela peut causer des problèmes potentiels pour les systèmes existants qui ne sont pas conçus pour fonctionner contre un MARS a permis la conception - « code existant optimisé pour fonctionner dans le monde non-MARS peut montrer une légère baisse de performance lorsqu'il est exécuté modifié non avec MARS »

  2. « avec MARS, vous pouvez envoyer plusieurs mu lti-instruction lots au serveur. Le serveur va entrelacer l'exécution de ces lots, ce qui signifie que si les lots changent l'état du serveur via des instructions SET ou USE, ou utilisent des instructions de gestion des transactions TSQL (BEGIN TRAN, COMMIT, ROLLBACK), vous et le serveur pouvez confondre à ce que votre intention réelle est. »

Je n'ai pas encore essayer une conception MARS a permis, mais je viens très près de le faire sur mon projet en cours. Nous avons un léger problème avec les opérations de requêtes concurrentes (et parfois dépendantes) (comme les données de configuration de chargement paresseuses à partir de la même base de données qu'un jeu d'enregistrements actif est en cours d'exécution).

Il y a plus d'informations sur le site MSDN (2) here

[(1) http://blogs.msdn.com/sqlnativeclient/archive/2006/09/27/774290.aspx]
[(2) http://msdn.microsoft.com/en-us/library/ms131686.aspx]

+3

Avant d'appliquer la bonne solution @RobS, je voudrais d'abord lire cet article pour vous assurer que vous ne pouvez pas résoudre ce problème avec la solution suivante: http://devproconnections.com/development/solving-net-scalability-problem OU en ajoutant .ToList() à la fin de votre appel DB, qui a résolu mon problème. Btw, merci RobS pour le bon conseil, MARS sera utile à l'avenir. :) – Termato

2

en fonction de quoi? il n'y a pas de réels inconvénients.

ils ne prennent pas en charge les points de sauvegarde Transaction. mais je ne pense pas à cela comme un inconvénient.

5
  • Il prend un peu plus de ressources serveur que de faire une connexion à la fois.
  • Vous devez exécuter SQL Server 2005 ou version ultérieure. Cela peut donc poser problème dans les environnements hérités (ack!).
+0

vous cna utiliser SqlTransaction très bien. –

+11

Combien coûte "un peu plus de ressources serveur"? Pouvez-vous mettre une estimation en termes de mémoire ou de CPU? Cela m'intéresse principalement parce que je suis dans un environnement Azure où les ressources sont proportionnelles au coût du serveur. –

Questions connexes