ADO.NET Verbindungs-Pooling & SQLServer
-
08-06-2019 - |
Frage
- Was ist es?
- Wie implementiere ich das Verbindungspooling mit MS SQL?
- Was sind die Auswirkungen, wenn die Leistung
- Ausführung von vielen Abfragen einen nach dem anderen (d.h.die Verwendung einer Schleife mit 30K+ Iterationen Aufruf einer gespeicherten Prozedur)?
- Ausführung ein paar Abfragen, die dauert eine lange Zeit (10+ min)?
- Gibt es best practices?
Lösung
Connection pooling ist ein Mechanismus zur Wiederverwendung von verbindungen, wie die Gründung einer neuen Verbindung ist langsam.
Wenn Sie einen MSSQL-Verbindung-string und System.Daten.SqlClient dann sind Sie bereits mit ihm - in .Netto-dieses Zeug unter der Haube, die meisten der Zeit.
Ein loop von 30k Iterationen könnte besser sein, als eine server-cursor (look up T-SQL-cursor-Anweisungen), je nach, was du tust mit jedem Schritt außerhalb des sproc.
Lange Abfragen sind in Ordnung, aber seien Sie vorsichtig, Aufruf von web-Seiten Asp.Net ist nicht wirklich optimiert für lange wartet und einige verbindungen werden ausgeschnitten.
Andere Tipps
Ein wenig mehr info über die Verbindungs-pooling-Ding...Sie verwenden es, bereits mit SqlClient, aber nur, wenn Ihre Verbindungszeichenfolge ist identisch für jede neue Verbindung, die Sie öffnen.Mein Verständnis ist, dass der Rahmen wird pool-Anschlüsse automatisch, wenn Sie es können, aber wenn Sie die Verbindungszeichenfolge variiert auch leicht von einem Anschluss zum nächsten, dann wird die neue Verbindung wird nicht vom pool aus - es wird neu erstellt (es ist teurer).
Sie können der Performance Monitor app mit Windows XP/Vista zu beobachten, SQL-verbindungen, und Sie sehen ziemlich schnell, ob oder nicht-pooling verwendet wird.Schauen Sie unter ".NET CLR Data" Kategorie" Performance Monitor.
Ich, die zweite Keith;wenn Sie den Aufruf einer gespeicherten Prozedur 30.000 mal, Sie haben weit größere Probleme als Verbindungs-pooling.
Deine Frage wurde teilweise beantwortet, indem dieser thread.Eine Suche würde haben ergeben, dass dies..Die definition des Verbindungs-Pooling, von denen eine Google würde beantwortet haben, mit dem ersten Treffer wird diese..
Das verlassen würde nur die best practices, die ich denke, wäre eine gute Frage :)
+1 Keith ' s Antwort.Er trifft den Nagel auf den Kopf.
Nur eine höfliche Erinnerung aus der FAQ:
Sie haben das internet durchsucht, bevor Fragen Sie Ihre Frage, und Sie kommen, um us-Streitkräfte mit der Forschung und Informationen zu Ihrer Frage ...Recht?