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

Vue: 44050|Répondre: 3

[Source] Optimisation des requêtes du Entity Framework AVEC(NOLOCK)

[Copié le lien]
Publié le 6-01-2021 à 14:52:16 | | | |
Tout d’abord, cet article etPas en ajoutant WITH(NOLOCK) pour améliorer la performance des requêtesAu lieu de cela, les données sont lues via le mécanisme d’isolation de la transaction.

Dans les bases de données SQL Server, lorsque la même table de base de données est fréquemment lue et écrite en même temps, il y aura un problème de verrouillage, c’est-à-dire que vous ne pouvez pas lire avant que la transaction précédente d’insertion, mise à jour et suppression ne soit pas terminée, et vous devez attendre que l’opération soit terminée avant de pouvoir effectuer l’opération de sélection, afin d’empêcher les opérations concurrentes et la lecture de données défectueuses.

SELECT avec WITH (NOLOCK) pour résoudre le blocage de blocage.

Note:Utiliser WITH(NOLOCK) entraînera une lecture de données défectueuse

ef affiche les instructions SQL générées
https://www.itsvse.com/thread-3813-1-1.html
Le code de test est le suivant :

Utilisez Func delegate pour emballer le code comme suit :

L’instruction SQL résultante est la suivante :

2021-01-06 14:32:09.9505 [ thread] DEBUG DEBUG LogCenter - instruction sql : SELECT TOP (1)
    [Étendue 1]. [ID] COMME [ID],
    [Étendue 1]. [Nom] AS [Nom]
    DE [dbo]. [Itsvse] EN TANT [Étendue 1]
    OÙ ([Étendue1].[ Nom] = @p__linq__0) OU (([Étendue1].[ Name] EST NULLE) ET (@p__linq__0 EST NUL))
2021-01-06 14:32:09.9515 [ thread] DEBUG DEBUG LogCenter - instruction sql :

2021-01-06 14:32:09.9525 [ thread] DEBUG DEBUG LogCenter - instruction sql : -- p__linq__0 : 'itsvse.com' (type = chaîne, taille = 4000)

2021-01-06 14:32:09.9525 [ thread] DEBUG DEBUG LogCenter - instruction sql : -- Exécution à 2021-01-06 14:32:09 +08:00

2021-01-06 14:32:09.9545 [ thread] DEBUG DEBUG LogCenter - instruction sql : -- Terminé en 1 ms avec résultat : SqlDataReader

2021-01-06 14:32:09.9555 [ thread] DEBUG DEBUG LogCenter - instruction sql :

2021-01-06 14:32:09.9555 [ thread] DEBUG DEBUG LogCenter - instruction sql : Connexion fermée à 2021-01-06 14:32:09 +08:00
Select Query n’inclut pas le mot-clé nolock.

(Fin)





Précédent:.NET/C# implémente une journalisation simple basée sur BlockingCollection
Prochain:Spécification du langage public .NET (CLS)
 Propriétaire| Publié le 6-01-2021 à 14:53:17 |
Utiliser : Ajouter l’instruction suivante à la Application_Start() du Global.cs, et le SQL généré ajoutera automatiquement with(nolock)
//ef命令拦截器
DbInterception.Add(nouveau WithNoLockInterceptor()) ;
Si l’instruction SQL doit être verrouillée, ajoutez l’extension suivante


1. Résolu le problème d’erreur des expressions régulières fournies sur Internet dans des circonstances particulières

 Propriétaire| Publié le 10-01-2021 10:27:32 |
Tester les scripts SQL :

Résultats des tests :

Aucune transaction n’est ajoutée par défaut, et le niveau d’isolation par défaut est correct :



Durée : 17561 millisecondes

IsolationLevel.ReadUncommitted niveau d’isolation, comme montré sur l’image suivante :



Temps : 519 ms

Source:



 Propriétaire| Publié le 2023-05-2 à 11:45:35 |
ADO.NET réglages permettent une lecture saleReadUncommitted, le code est le suivant :


Il existe une autre façon de l’écrire, le code élégant est le suivant :

Il n’y a aucun problème avec les deux tests d’écriture,Il est recommandé d’utiliser directement le premier!!!


Autres façons d’écrire :



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