2010-12-20 22 views
2

Ich versuche, die Task-Parallel-Bibliothek zu verwenden, um den teuren ADO.NET-Datenbankzugriff vom UI-Thread zu entladen (früher würde das Programm, das ich neu schreibe, einfach anhalten und gelegentlich VB6 aktualisieren) Textfeld mit seinem Fortschritt, bis die Daten in der Datenbank vollständig geladen waren). Ich habe eine komplexe Abhängigkeitsstruktur (26 einzelne Aufgaben), und ich versuche herauszufinden, wie viel davon es wert ist, parallelisiert zu werden.Paralleler Zugriff auf SQL Server

Ich würde gerne wissen, ob IO-Zugang wie dieser überhaupt mit Leistungsboni parallelisiert werden kann. Wenn nicht, werde ich die Daten sequenziell laden und die Benutzeroberfläche aktualisieren, sobald genügend Informationen geladen sind, um diese Aufgabe auszuführen. Aber es wäre nett, einen zusätzlichen Schub zu bekommen, indem man vielleicht zwei Dinge gleichzeitig lädt, anstatt nur eines Ich bekomme keine doppelte Geschwindigkeit).

Antwort

1

Es ist möglich, dass die Parallelisierung die Leistung erhöht, aber nicht garantiert. Es hängt alles davon ab, wo Ihr Engpass liegt.

Zum Beispiel, wenn eine Anfrage teuer ist, weil sie viele Daten lädt, dann verbraucht es wahrscheinlich einen Großteil Ihrer Netzwerkbandbreite. Parallelisierung in diesem Fall würde nicht viel helfen, wenn überhaupt.

Wenn der Engpass dagegen die SQL-Verarbeitung ist und Ihre SQL-Anfrage verlässt den SQL Server mit freien Kapazitäten in seinem eigenen Engpass, dann können Sie SQL Server (sehr gut) Parallelisierungsfunktionen profitieren.

Es ist auch möglich, dass die Parallelisierung Sie verlangsamt. Wenn zum Beispiel der SQl-Server nicht viel RAM hat und nur auf einen einzelnen Datenträger zugreift, kann das Erzwingen mehrerer paralleler Abfragen zu mehr Suchaktivität auf der Festplatte führen, was die Gesamtleserate dramatisch verlangsamen kann.

So wie es oft ist, ist die Antwort kein einfaches Ja oder Nein, aber "es kommt darauf an".

+0

Danke! Genau das wollte ich: wenn * kann * es hilfreich sein. Wir verwenden ziemlich leistungsfähige Maschinen, ich muss die Netzwerknutzung profilieren, um zu sehen, was passiert. Ich kann immer noch andere netzwerkintensive Programme verwenden, während es passiert, also denke ich nicht, dass es alles isst. – Crisfole

Verwandte Themen