Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 11079|Répondre: 1

[Source] MSSQL AVEC LECTURE SALE (NOLOCK)

[Copié le lien]
Publié le 03-04-2020 à 10:06:04 | | |
Inconvénients :

1. Cela produira une lecture salaire

2. Applicable uniquement aux instructions de requête sélectionnées

Avantages :

1. Certains fichiers indiquent que l’efficacité des requêtes SQL avec WITH (NOLOCK) peut être augmentée de 33 %.

2. Peut être utilisé pour les instructions de jointure interne

Lecture sale : Un utilisateur effectue une modification à une ressource, un autre utilisateur lit l’enregistrement modifié, puis le premier utilisateur abandonne la modification, et les données reviennent à la modification précédente ; ces deux résultats différents sont une lecture sale.

Détails :

Pour améliorer les performances des requêtes SQL, de manière générale, la première considération est de créer un index. En fait, en plus de l’établissement d’index, lorsque nous placons des commandes SQL, ajouter une section AVEC (NOLOCK) à la syntaxe peut améliorer le phénomène de verrouillage des jeux de données dans un environnement avec un grand nombre de requêtes en ligne, améliorant ainsi la performance des requêtes.

Cependant, il faut noter que SQL SELECT avec (NOLOCK) peut provoquer une lecture sale.

Par exemple:

En plus du simple SELECT, vous pouvez aussi utiliser la syntaxe SELECT avec JOIN. Mais SUPPRIMER, INSÉRER, METTRE À JOUR et d’autres commandes qui nécessitent des transactions ne sont pas bonnes...


Certains fichiers indiquent que l’efficacité des requêtes SQL peut être augmentée de 33 % avec WITH (NOLOCK).
Ajouter WITH (NOLOCK) indique à SQL Server que notre commande SELECT n’a pas besoin de prendre en compte l’état du verrouillage transactionnel de la table actuelle, donc les performances seront significativement améliorées, et le phénomène de verrouillage du système de base de données sera considérablement réduit (y compris le blocage mort).

Une chose à noter est que comme WITH (NOLOCK) ne prend pas en compte le verrouillage de transaction de la table courante, donc lorsqu’il y a des données en plusieurs phases (par exemple des transactions sur plusieurs tables – >par exemple des systèmes de retrait), WITH (NOLOCK) ignore les données actuellement traitées par le processus de transaction...

Pour être franc, c’est-à-dire que lorsqu’on utilise NoLock, il permet de lire des données modifiées mais dont la transaction n’a pas encore été terminée. Par conséquent, si vous devez prendre en compte l’intégrité en temps réel des données transactionnelles, vous devriez réfléchir sérieusement à utiliser WITH (NOLOCK).

Si vous n’avez pas besoin de considérer les transactions, WITH (NOLOCK) peut être une référence utile.

Note 1 : AVEC ( < table_hint > )
Spécifie le balayage de table, un ou plusieurs index utilisés par l’optimiseur de requêtes,
Ou par l’optimiseur de requêtes pour exploiter cette table de données et utiliser le mode verrouillage pour cette affirmation.

Note 2 : WITH (NOLOCK) est équivalent à READ UNCOMMITTED





Précédent:La latence maître-esclave de la base de données conduit à une résolution inexacte des requêtes
Prochain:Résolu le problème que Fiddler ne pouvait pas explorer localhost local, requêtes réseau 127.0.0.1
Publié le 5-04-2020 à 14:21:36 |
Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com