7
votes

Deadlocks - Cela vous aidera-t-il vraiment?

Donc, j'ai une requête qui garde une mauvaise manœuvre sur moi. Les personnes qui connaissent bien le système ne peuvent pas comprendre pourquoi la SproC est une impasse, mais ils me disent que je devrais simplement ajouter ceci à cela: xxx

est-ce une solution valide? Qu'est-ce que cela fait?


3 commentaires

Bien que les gens puissent mieux expliquer ces paramètres que je puisse dire que je ferai remarquer que lire non engagés a des conséquences que vous devriez comprendre avant de le permettre. Avoir très peur de changer les niveaux d'isolation sans comprendre ce qui se passe.


hah, sonne comme un endroit où je travaillais ... c'était la première réponse à n'importe quelle impasse SQL ou un problème de perf) ... Aucune analyse, juste la coller et commettre: p


Je préférerais que vous nous montriez la requête qui est une nuage. :)


5 Réponses :


5
votes

NOCOUNT gardera votre requête de retourner des rangées à la demande d'appel à l'application d'appel (I.E. 1000000 Rows concernés).

Niveau d'isolement des transactions Lire non engagée permettra de lire des lectures sales comme indiqué Ici.

Le niveau d'isolation peut aider, mais voulez-vous permettre des lectures sales?


1 commentaires

Je devinerais que puisqu'il obtiendrait des blocages pour une raison, il ne le fait pas!



2
votes

Le meilleur guide est:

http://technet.microsoft.com/es-es/library /ms173763.aspx

Snippet:

Indique que les déclarations peuvent lire des lignes qui ont été modifiées par d'autres transactions, mais pas encore commis.

Opérations en cours d'exécution à la READ niveau UNCOMMITTED ne conteste pas partagé verrous pour empêcher que d'autres transactions à partir des données lues par la modification de la transaction en cours. LIRE UNCOMMITTED les transactions sont pas bloquées par serrures exclusives qui empêcheraient la transaction en cours à partir des lignes de lecture qui ont été modifiés, mais pas par d'autres transactions. Lorsque cette option est activée, il est possible de lire des modifications non validées, qui sont appelés lit sale. Les valeurs de la les données peuvent être modifiées et les lignes peuvent apparaissent ou disparaissent dans le jeu de données avant la fin de la transaction. Cette option a le même effet que la mise en NOLOCK sur toutes les tables de tous instructions SELECT dans une transaction. Ceci est la moins restrictive de la les niveaux d'isolement.

Dans SQL Server, vous pouvez également réduire contention de verrouillage tout en protégeant les transactions de sale se lit comme suit les modifications de données non confirmées à l'aide de soit:

Le niveau d'isolation READ COMMITTED avec le READ_COMMITTED_SNAPSHOT option de base de données sur ON. le niveau d'isolation SNAPSHOT

.


0 commentaires

3
votes

Ajout de définir aléatoire Les options CODE> de la requête est peu susceptible d'aider j'ai peur que j'ai peur que

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED


0 commentaires

6
votes
ALTER DATABASE MyDatabase
SET READ_COMMITTED_SNAPSHOT ON

0 commentaires

0
votes

sur une autre punaise, il y a deux autres aspects à considérer, cela peut aider.

1) index et les index utilisés par le SQL. La stratégie d'indexation utilisée sur les tableaux affectera le nombre de lignes. Si vous apportez les modifications de données à l'aide d'un index unique, vous pouvez réduire les risques d'impasse.

Un algorithme - bien sûr, cela ne fonctionnera pas tous les cas. L'utilisation de Nolock est ciblée plutôt que d'être globale. xxx

2) Durée de la transaction Plus une transaction est longue d'une transaction plus probable, il peut y avoir eu lieu. S'il existe un moyen de réduire le temps que les enregistrements restent verrouillés, vous pouvez réduire les chances d'une impasse survenant. Par exemple, effectuez autant de relevés de sélection (par exemple de recherche) au début du code au lieu d'effectuer une insertion ou une mise à jour, puis une recherche, puis un insert, puis une autre recherche. C'est ici que l'on peut utiliser l'indice Nolock pour sélectionner sur des tables "statiques" qui ne changent pas de réduction de la "empreinte" de verrouillage du code.


0 commentaires