2016-05-14 6 views
1

Ich benutze CassandraCSharpDriver 3.0.4 Version. Ich muss meinen Tisch verkleinern. Ich führe 24 parallele Abfragen durch und nimm 24 IEnumerable-Listen. Dann stelle ich 24 IEnumerable Liste zu einer IEnumerable Liste zusammen. Diese Schritte brauchen nicht viel Zeit. Es ist ungefähr 10 Sekunden.datastax C# driver IEnumerable <T> foreach optimieren

Das Problem beginnt, wenn ich foreach Codes für die kombinierte IEnumerable starten, die 10M Datensätze hat. Es dauert ungefähr 15 Minuten. Es macht nichts, wenn ich Parallel.Foreach benutze.

Ich verwende Mapping-Funktion, Linq-Funktion des Treibers. In gewisser Weise muss ich Mapping-System optimieren, kann etwas manuell tun oder etwas parallel tun. Ich brauche Vorschläge. Übrigens sind mir andere Lösungen für mapreduce bekannt. Ich brauche genau das.

Antwort

1

Nachdem ich viel Zeit verbracht habe und sowohl linq als auch plain session getestet habe, habe ich herausgefunden, was das verursacht hat. Wenn Sie die execute-Methode ausführen, wird die Anzahl der Seitengrößenzeilen verwendet. Wenn Sie das Ergebnis iterieren möchten, werden ganze Zeilen benötigt. In meinem Fall war die Seitengröße 5000 und die gesamte Anzahl der Zeilen ist 1.5M, weshalb Iteration zu viel Zeit braucht.