Este artículo es un artículo espejo de traducción automática, por favor haga clic aquí para saltar al artículo original.

Vista: 27|Respuesta: 0

[Consejos] Optimización WITH (NOLOCK) para consultas EF Core de alta concurrencia

[Copiar enlace]
Publicado enAyer a las 20:48 | | |
Requisitos: Algunos datos permiten lecturas sucias, como el contenido de los artículos, las vistas de página, los comentarios, etc., que no son tan rigurosos como los datos financieros. Para mejorar el rendimiento de las consultas, se pueden usar transacciones ReadUncommitted, pero SqlTransaction y TransactionScope tienen errores de aislamiento de fugas que aún no se han corregido, por lo que considera usar la solución WITH (NOLOCK).

Revisión:
Optimización de consultas del Entity Framework WITH(NOLOCK)
https://www.itsvse.com/thread-9513-1-1.html

.NET/C# utiliza SqlScriptDOM para analizar y ejecutar sentencias SQL
https://www.itsvse.com/thread-11222-1-1.html

Niveles de aislamiento de fugas de SqlTransaction y TransactionScope (¡este error existe desde hace 8 años y aún no se ha solucionado!) Calculo que muchas personas podrían verse afectadas, pero puede que no se den cuenta):El inicio de sesión del hipervínculo es visible.

Este artículo necesita referenciar el SqlScriptDOM para analizar sentencias SQL y añadir WITH(NOLOCK). Consulte el proyecto de código abierto:El inicio de sesión del hipervínculo es visible.

Las citas nuget son las siguientes:
Crea una nueva función AllowDirtyReadAttribute.cs, codifica lo siguiente:
Crea un nuevo WithNoLockInterceptor para anular ciertos métodos en DbCommandInterceptor. El código es el siguiente:
Inyectar en EF Core con la siguiente configuración:
Úsalo para añadirlo por encima del método controlador[PermitirLeer sucio]Enlatar.

Instrucción SQL en bruto:
SELECT [o]. [Id],
         [o]. [NombreDeCliente],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Producto]
DE [Órdenes] COMO [o]
             UNIÓN EXTERIOR IZQUIERDA
         [Líneas de Orden] AS [o0]
         ON [o]. [Id] = [o0]. [OrderId]
DONDE [o]. [Id] = 1
ORDEN POR [o]. [Id];

Declaración generada tras añadir NOLOCK:
SELECT [o]. [Id],
         [o]. [NombreDeCliente],
         [o0]. [Id],
         [o0]. [OrderId],
         [o0]. [Producto]
DE [Órdenes] COMO [O] CON (NOLOCK)
         UNIÓN EXTERIOR IZQUIERDA
         [Líneas de Orden] COMO [o0] CON (NOLOCK)
         ON [o]. [Id] = [o0]. [OrderId]
DONDE [o]. [Id] = 1
ORDEN POR [o]. [Id];




Anterior:(MSSQL) Búsqueda de texto completo de SQL Server, índice de texto completo
Renuncia:
Todo el software, materiales de programación o artículos publicados por Code Farmer Network son únicamente para fines de aprendizaje e investigación; El contenido anterior no se utilizará con fines comerciales o ilegales; de lo contrario, los usuarios asumirán todas las consecuencias. La información de este sitio proviene de Internet, y las disputas de derechos de autor no tienen nada que ver con este sitio. Debes eliminar completamente el contenido anterior de tu ordenador en un plazo de 24 horas desde la descarga. Si te gusta el programa, por favor apoya el software genuino, compra el registro y obtén mejores servicios genuinos. Si hay alguna infracción, por favor contáctanos por correo electrónico.

Mail To:help@itsvse.com