J'ai une table simple dans mon application où est p>
id | Valeur | Date | ItemID p> blockQuote>
Tout le temps, certains éléments inséraient des données a jeté mon site Web sur cette table. Je n'ate que des données de 5 minutes ou plus. En même temps, lorsque j'utilise mon application Web, je sélectionne des valeurs max, min et actuelles pour les éléments. De temps en temps, j'ai p>
transaction (ID de processus 62) était impassible aux ressources de serrure avec un autre processus et a été choisi comme victime d'impasse. Revenir à transaction. p> blockQuote>
Y a-t-il une chance d'obtenir des données et pour ce moment où je sélectionne, ne vous souciez pas des inserts? P>
3 Réponses :
Vous pouvez utiliser Voir la réponse ici
Qu'est-ce que "avec (nolock)" dans SQL Server? p>
et ici
http://sqlserverplanet.com/tsql/using-with-nolock p > avec (nolock) code> indice,
Cela vous obtiendra des données non engagées. P>
Si cela, je vais apprécier si vous le ferez comme la réponse sélectionnée :)
Jusqu'à présent, le client n'a envoyé aucune demande que le problème est toujours existant :)
Vous pouvez modifier la requête SELECT pour éviter les blocages comme: P>
Sélectionnez l'élémentId, max (valeur), min (valeur) de Table_Name avec (Nolock) Group by ItemID, date p>
Si vous utilisez Si vous voulez vous assurer que le SQL Server 2016 code>: p>
SELECT CODE> Signal (code> Les verrous partagés code> sont conservés sur des ressources disent que la TableX à partir de laquelle les valeurs max, min et actuelles sont sélectionnées. Maintenant, pour ce moment, si vous INSERTER CODE> DATA dans ces tables verrouillées (TABLEX), alors car Insérer code> nécessite un Verrouillage exclusif code> Serrure sur la ressource (TABLEX) , l'instruction insert code> attendra le Sélectionnez CODE> pour être terminé. p>
avec (nolock) ou avec (lecture non engagée) code> indice de table de sorte que Sélectionnez code> Les instructions ne portent pas de verrouillage sur les ressources sous-jacentes (TABLEX ). Mais le problème est que ce SELECT CODE> peut lire des données non engagées modifiées pendant une transaction puis a été renvoyée à son état initial (également appelé lecture de données sale). P>
SELECT CODE> lit les données engagées et ne bloquez pas non plus le inserts code> pour écrire à tableX, puis au niveau de la base de données SET READ_COMMITTED_SNAPSHOT Sur code>. p>
Utilisez-vous SQL Server?