Werden mehrere Verbindungen zu einer Datenbank von mehreren Threads einer Anwendung erhöhen Einsatz Abfragen Leistung?

StackOverflow https://stackoverflow.com/questions/605607

Frage

Hier habe ich mit einer Datenbank zu tun habe zig Millionen von Datensätzen enthalten. Ich habe eine Anwendung, die mit der Datenbank verbindet, werden alle Daten aus einer einzigen Spalte in einer Tabelle wird und macht eine Operation auf sie und aktualisiert sie (für SQL Server - mit Cursor).

Für Millionen von Datensätzen ist es sehr sehr nimmt ... lange Zeit zu aktualisieren. Deshalb mag ich es schneller machen, indem

  1. unter Verwendung mehrerer Threads mit einer unabhängigen Verbindung für jeden Thread.

oder

  1. durch eine einzige Verbindung über alle Threads die Update-Anfragen zu schießen.

Was man schneller ist, oder wenn Sie noch andere Ideen plz erklären.

Ich brauche eine Lösung, die von Datenbanktyp unabhängig ist, oder auch wenn Sie spezifische Lösungen für jede Art von db wissen, antworten Sie bitte.

War es hilfreich?

Lösung

Die Speedup Sie versuchen, nicht zu erreichen arbeiten. Im Gegenteil, es wird die gesamte Verarbeitung verlangsamen, da die Datenbank nun auch mehrere Verbindungen / sessions / Transaktionen synchron zu halten hat.

Halten Sie mit möglichst wenigen Verbindungen / Transaktionen wie möglich für sich wiederholende und vergleichbare Operationen. Wenn es für Ihren Geschmack zu lange dauert, versuchen Sie vielleicht zu analysieren, ob die Abfragen irgendwie optimiert werden können. Auch einen Blick auf Datenbank-spezifische Erweiterungen (zB Bulk-Operationen) geeignet für Ihr Problem.

Andere Tipps

Alles hängt von der Datenbank und die Hardware es läuft.

Wenn die Datenbank Verwendung der gleichzeitigen Verarbeitung machen kann, und vermeidet Konflikte auf gemeinsam genutzte Ressourcen (z Seite Basis Schlösser mehrere Datensätze erstrecken würde, Rekord basierte würde nicht). Gemeinsam genutzte Ressourcen in diesem Fall umfassen Hardware, eine Single-Core-Box nicht in der Lage sein, mehr CPU intensive Aktivitäten auszuführen (zum Beispiel SQL-Parsing) truely parallel.

Die Netzwerklatenz ist etwas, das Sie bei gleichzeitigen Einsätzen lindern helfen könnten, auch wenn die Datenbank selbst Parallelität auszunutzen nicht in der Lage.

Wie bei jeder Frage der Leistung gibt es Ersatz für das Testen in Ihrem speziellen Szenario.

Wenn möglich, versuchen Sie die gespeicherte Prozedur zu verwenden, die die gesamte Verarbeitung zu tun und die Datensätze zu aktualisieren.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top