2012-04-14 7 views
0

ich folgende Anforderung haben -Multithreaded Stapelverarbeitung (SELECT und UPDATE) [.NET] [DB2]

Ich muss
1.query eine Tabelle und wählen Sie ca. 20k Zeilen passende somecondition.
2.Verarbeiten Sie diese Datensätze und ändern Sie einige Felder.
3.aktualisieren Sie die gleiche Tabelle mit geänderten Datensätzen.

Wie kann ich Multithreading verwenden, um SELECT-, PROCESS- und UPDATE-Datensätze zu verarbeiten? Best Practices? Was ist optimale Thread-Nummer zu verwenden? Irgendwelche alternativen Ansätze?

! ZU VERWENDENDE ZEILEN SIND UNABHÄNGIG VONEINANDER

Antwort

0

Sie erkennen natürlich, dass, wenn die Zeilen, die Sie verarbeiten, KOMPLETT unabhängig voneinander sind, die Verarbeitung in gleichzeitigen Threads wahrscheinlich HURT Leistung.

Richtig?

Wie auch immer, mein bester Rat:

1) Verwenden Sie mehrere Threads nicht verwenden, wenn Sie unbedingt

brauchen

2) Selbst dann nicht verwendet mehrere Threads, es sei denn die „Chargen“ sind unabhängig (nichts in einer Charge jemals brauchen werden auf eine Sperre von einem anderen gehalten warten)

3) Führen Sie die Abfrage, Bearbeitung und Aktualisierung zusammen, als eine einzelne Charge

... und, am wichtigsten ...

4) Verwenden Sie gespeicherte Prozeduren, wo immer, wann immer dies möglich:

http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb.doc/ad/c0007033.htm

+0

Ja Reihen sind völlig unabhängig voneinander – techknowfreak