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

Ansehen: 63300|Antwort: 7

[.NET Core] ADO.NET Erstellen Sie einen SqlConnection-Connection Pool über den ObjectPool

[Link kopieren]
Veröffentlicht am 19.04.2020, 18:51:31 | | | |
ObjectPool ist eine neue Funktion von Microsoft, Microsoft hilft uns, einige Objekte zu pflegen, die wiederverwendet werden können.

Kurz gesagt: Ähnlich wie bei Teilfahrrädern: Wenn Sie es benutzen, scannen Sie den Code, um es zu entsperren, bedeutet das Fahrzeug, dass es besetzt ist; wenn Sie es benutzen, wenn Sie das Auto abschließen, lässt das Fahrzeug die Insassen frei. Diese Besetzungen und Freigaben werden alle von der Plattform für uns verwaltet.

Manche Objekte sind nicht threadsicher, aber jedes Mal, wenn wir das Objekt instanziieren, müssen wir einige Ressourcen verbrauchen.

Detaillierte Erklärung des Objektpools in .NET Core
https://www.itsvse.com/thread-9152-1-1.html
(Quelle: Architect_Programmer)
Zuerst erstellen wir eine neue SqlConnectionPooledObjectPolicy-Klasse, die die IPooledObjectPolicy-Schnittstelle erbt <T>und ihre beiden Methoden implementieren muss.

Wie man das Objekt in der Create-Methode instanziiert,Return zeigt an, ob das Objekt noch wiederverwendet werden kann, und wenn falsch zurückgegeben wird, wird das Objekt aus dem Objektpool gelöscht.

Der Quellcode des Tests ist wie folgt:

Die Testergebnisse sind wie folgt:



Man sieht, dass der Connection Pool bei den ersten 10 Abfragen etwas langsamer ist und danach schneller als jede Instanziierung von SqlConnection.

Angehängt ist der Quellcode

Touristen, wenn ihr den versteckten Inhalt dieses Beitrags sehen wollt, bitteAntwort






Vorhergehend:C#-Programme führen zeitaufwändige Testklassen aus
Nächster:MSSQL Trusted_Connection Konfiguration
Veröffentlicht am 19.04.2020, 21:58:46 |
Das ist etwas Neues
Veröffentlicht am 30.04.2020, 13:05:18 |
Komm und sieh, Support, Sofa
 Vermieter| Veröffentlicht am 22.3.2021, 15:31:43 |
Quellcode von DefaultObjectPoolProvider
MaximumRetained Default Environment.ProcessorCount * 2;





 Vermieter| Veröffentlicht am 22.03.2021, 15:34:51 |
Es kann auch direkt geschrieben werden.


 Vermieter| Veröffentlicht am 23.03.2021, 09:50:57 |
Testcode:

maximumRetained ist auf 5 gesetzt, und der Test wird nur einmal instanziiert, wenn er jedes Mal zurückgegeben wird, wie in der untenstehenden Abbildung dargestellt:



Im Falle einer Nicht-Rückkehr wird der Test 10 Mal instanziiert, obwohl er die maximale Retained Einstellung von 5 überschreitet und keine Ausnahme auslöst; es kann sein, dass nach Abschluss der Nutzung der Test langsam recycelt wird und dann nur noch 5 Fälle erhalten bleiben:


 Vermieter| Veröffentlicht am 24.3.2021, 18:23:44 |
SQL Server Connection Pool (ADO.NET)

Wann immer ein Benutzer auf einer Verbindung Open aufruft, sucht der Pool-Prozess nach den im Pool verfügbaren Verbindungen. Wenn eine Poolverbindung verfügbar ist, wird sie an den Anrufer zurückgegeben, anstatt eine neue Verbindung zu öffnen. Wenn die Anwendung auf dieser Verbindung Schließen aufruft, gibt der Pool-Prozess die Verbindung an das aktive Verbindungspool-Set zurück, anstatt die Verbindung zu schließen.

https://docs.microsoft.com/zh-cn ... -connection-pooling

Veröffentlicht am 17.08.2021, 10:13:07 |
Lernen lernen
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