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
|