|
|
Publié surHier à 20h48
|
|
|

Exigences : Certaines données permettent une lecture coquine, comme le contenu des articles, les pages vues, les commentaires, etc., ce qui n’est pas aussi rigoureux que les données financières. Pour améliorer les performances des requêtes, des transactions ReadUncommitted peuvent être utilisées, mais SqlTransaction et TransactionScope présentent des bugs de niveau d’isolement de fuite qui n’ont pas encore été corrigés, il convient donc d’envisager l’utilisation de la solution WITH (NOLOCK).
Révision:
Niveaux d’isolation des fuites de SqlTransaction et TransactionScope (ce bug existe depuis 8 ans et n’a toujours pas été corrigé !) J’estime que beaucoup de personnes pourraient être affectées, mais ne s’en rendent pas compte :La connexion hyperlientérée est visible.
Cet article doit se référer au SqlScriptDOM pour analyser les instructions SQL et ajouter WITH(NOLOCK). Consultez le projet open source :La connexion hyperlientérée est visible.
Citations Nuget comme suit :
Créez une nouvelle fonctionnalité AllowDirtyReadAttribute.cs, codez comme suit :
Créez un nouveau WithNoLockInterceptor pour écraser certaines méthodes dans DbCommandInterceptor. Le code est le suivant :
Injecter dans EF Core avec la configuration suivante :
Utilise pour l’ajouter au-dessus de la méthode du contrôleur[AutoriserLecture Sale]Pouvoir.
Déclaration SQL brute :
SELECT [o]. [Id], [o]. [NomDeClient], [o0]. [Id], [o0]. [OrderId], [o0]. [Produit] DE [Ordres] COMME [o] JOINT EXTÉRIEUR GAUCHE [Lignes d’Ordre] AS [o0] ON [o]. [Id] = [o0]. [OrderId] OÙ [o]. [Id] = 1 ORDRE PAR [o]. [Id] ; Instruction générée après l’ajout de NOLOCK :
SELECT [o]. [Id], [o]. [NomDeClient], [o0]. [Id], [o0]. [OrderId], [o0]. [Produit] DE [Ordres] COMME [O] AVEC (NOLOCK) JOINT EXTÉRIEUR GAUCHE [Lignes d’Ordre] EN TANT [OO] AVEC (NOLOCK) ON [o]. [Id] = [o0]. [OrderId] OÙ [o]. [Id] = 1 ORDRE PAR [o]. [Id] ; |
Précédent:(MSSQL) Recherche en texte intégral SQL Server, index texte intégral
|