Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 44050|Antwort: 3

[Quelle] Entitätsrahmen-Abfrageoptimierung WITH(NOLOCK)

[Link kopieren]
Veröffentlicht am 6.1.2021, 14:52:16 | | | |
Zunächst einmal dieser Artikel undNicht durch das Hinzufügen von WITH(NOLOCK) zur Verbesserung der AbfrageleistungStattdessen werden die Daten durch den Isolationsmechanismus der Transaktion gelesen.

In SQL-Server-Datenbanken gibt es ein Sperrproblem, wenn die gleiche Datenbanktabelle häufig gleichzeitig gelesen und geschrieben wird, das heißt, man kann erst lesen, wenn die vorherige Insert-, Update- und Delete-Transaktion abgeschlossen ist, und man muss warten, bis die Operation abgeschlossen ist, bevor man die Select-Operation ausführen kann, um gleichzeitige Operationen und das Lesen von Dirty Data zu verhindern.

SELECT-Anweisung mit WITH (NOLOCK), um den blockierenden Deadlock zu lösen.

Anmerkung:Die Verwendung von WITH(NOLOCK) führt zu unsauberen Datenlesungen

ef zeigt die generierten SQL-Anweisungen an
https://www.itsvse.com/thread-3813-1-1.html
Der Testcode ist wie folgt:

Verwenden Sie Func Delegate, um den Code wie folgt zu paketieren:

Die resultierende SQL-Anweisung lautet wie folgt:

2021-01-06 14:32:09.9505 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung: SELECT TOP (1)
    [Extent1]. [ID] ALS [ID],
    [Extent1]. [Name] AS [Name]
    VON [dbo]. [Itsvse] AS [Extent1]
    WO ([Extent1].[ Name] = @p__linq__0) ODER (([Extent1].[ Name] IST NULL) UND (@p__linq__0 IST NULL))
2021-01-06 14:32:09.9515 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung:

2021-01-06 14:32:09.9525 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung: -- p__linq__0: 'itsvse.com' (Typ = Zeichenkette, Größe = 4000)

2021-01-06 14:32:09.9525 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung: -- Ausgeführt am 06.01.2021 14:32:09 +08:00

2021-01-06 14:32:09.9545 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung: -- In 1 ms abgeschlossen mit Ergebnis: SqlDataReader

2021-01-06 14:32:09.9555 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung:

2021-01-06 14:32:09.9555 [ Thread] DEBUG DEBUG LogCenter - SQL-Anweisung: Verbindung geschlossen am 06.01.2021 14:32:09 +08:00
Select-Abfrage enthält das Nolock-Schlüsselwort nicht.

(Ende)





Vorhergehend:.NET/C# implementiert einfaches Logging basierend auf BlockingCollection
Nächster:.NET (CLS) öffentliche Sprachspezifikation
 Vermieter| Veröffentlicht am 06.01.2021, 14:53:17 |
Verwendung: Füge die folgende Anweisung zum Application_Start() des Global.cs hinzu, und das generierte SQL fügt automatisch with(nolock) hinzu.
//ef命令拦截器
DbInterception.Add(neu WithNoLockInterceptor());
Wenn die SQL-Anweisung gesperrt werden muss, fügen Sie folgende Erweiterung hinzu


1. Das Fehlerproblem regulärer Ausdrücke, die im Internet unter besonderen Umständen bereitgestellt werden, behoben

 Vermieter| Veröffentlicht am 10.01.2021, 10:27:32 |
Testen von SQL-Skripten:

Testergebnisse:

Standardmäßig wird keine Transaktion hinzugefügt, und die Standard-Isolationsstufe ist korrekt:



Dauer: 17.561 Millisekunden

IsolationLevel.ReadUncommitted Isolationslevel, wie im folgenden Bild gezeigt:



Zeit: 519 ms

Quelle:



 Vermieter| Veröffentlicht am 2.5.2023, 11:45:35 |
ADO.NET Einstellungen erlauben schmutziges LesenLesenUngebunden, der Code lautet wie folgt:


Es gibt noch eine andere Art, es zu schreiben, der dapper-Code ist wie folgt:

Mit beiden Tests gibt es keine Probleme,Es wird empfohlen, die erste direkt zu verwenden!!!


Weitere Schreibweisen:



Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com