2009-08-11 8 views
2

Ich baue gerade eine App, die Angebote generiert. Die Gesamtzeit für die Generierung aller Angebote beträgt etwa 10 Sekunden und bietet derzeit eine inakzeptable Nutzererfahrung.Multithread-Datenbankzugriff (.NET)

Was ich tun möchte, ist Multi-Thread jedes Zitat, so dass der Benutzer Ergebnisse sehen kann, wie sie kommen. Das Problem ist, dass die App, die ich geerbt habe viel Buslogik auf der db.

Was ich frage mich ist, wenn es in Ordnung ist, jeden Zitat Artikel Multithread, oder würde dies zu viel Belastung auf dem Db-Server (z. B. 5 Zitate = 5 Threads oder Threadqueueworkeritems) verursachen?

Antwort

0

Das einzige, worüber ich mir Sorgen machen müsste, ist, was "ein Angebot erstellen" auf der DB beinhaltet. Dies kann das Schreiben in die Datenbank und, wenn Sie eine Menge transaktionaler Aktivität in dort haben, die verschiedenen Angebote können miteinander konkurrieren und könnte mit Anführungszeichen kommen in Folge aufgrund der Blockierung oder schlechter, Deadlocking.

Dies ist Worst-Case-Szenario Zeug, geht aber von den knappen Details in der Frage gegeben.

+0

Das Problem ist, dass Tonnen von Logik auf der db ausgeführt wird. Ich habe ein Projekt gestartet, um es in der Business-Schicht in dem Programm zu erhalten, das mit der Datenbank verbunden ist. Gegenwärtig muss ich nur eine taktische Korrektur einleiten, um sicherzustellen, dass das Zitat nicht zu hängen scheint. – Rogeclub

1

Auf den meisten RDBMS, 5 gleichzeitige Verbindungen sollte kein Problem sein, so dass ich glaube, Sie leicht fünf Threads, die jeweils eine

seine eigene Verbindung mit
0

Datenbanken sind in der Regel mehrere gleichzeitige Verbindungen ausgelegt zu behandeln. Also nichts zu befürchten.

0

Es sollte kein Problem mit der Datenbanklast geben. Sie sollten jedoch den Code auf Deadlock-Bedingungen überprüfen, die Sie eher finden, wenn Sie parallel mit der Ausführung von Aufgaben beginnen. Auch müssen Ihre Transaktionsgrenzen gut definiert werden, aber wenn dies ein Angebot generiert, würde ich mir nicht vorstellen, dass ReadUncommitted ein Problem wäre