2009-04-06 4 views
1

Ich habe eine lange gespeicherte Prozedur, die viele Abfragen durchführt und einen Bericht generiert. Da es sich um einen zusammenfassenden Bericht handelt, ruft es viele andere Procs auf, um Daten zu erhalten. Ich frage mich, wenn sie möglich aus mit einem proc in SQL Server gleichzeitiges SQL-Batches ausführen ...gleichzeitige Abfragen in T-SQL

vielen Dank

Antwort

1

Nein, SQL Server macht keine Parallelität in dem Sinne, wie Sie meinen.

Wie lange läuft der Code? Ist das ein Problem?

Bearbeiten, basierend auf Kommentar.

11-20 Sekunden für einen großen zusammenfassenden Bericht ist überhaupt nicht schlecht.

Wenn Sie die Aufrufe parallel vom Client senden, kann es gleich oder länger dauern: Wenn jede Abfrage ziemlich intensiv und ressourcenintensiv ist, können Sie den Server maximieren, indem Sie sie zusammen ausführen und andere Prozesse beeinflussen. + dann müssen Sie Daten in der endgültigen Form im Client zusammenstellen.

+0

Code läuft irgendwo zwischen 11 bis 20 Sekunden, obwohl es klingt, als würde ich eine Client-verwaltete Lösung bereitstellen müssen –

0

Ich denke, Sie werden die Gleichzeitigkeit in Code zu tun haben (multithreaded SQL-Aufrufe) und verketten das Ergebnis am Ende.

1

Ihre beste Wette ist, solche Sachen aus einer anderen Datenbank zu melden. Entweder basierend auf Transformationen von Ihrer Produktionsdatenbank in eine OLAP-Datenbank (wodurch die Zeitverzögerung wegfällt) oder zumindest ein periodischer (sagen wir fast) statischer Snapshot (wodurch die Verzögerung keine Rolle spielt - Sie können das Sperren deaktivieren, weil nichts wird sich verändern).

Seitliche Vorteile: Report-Leser werden viel glücklicher sein, wenn Berichte im Abstand von fünf Minuten die gleichen Antworten geben. Oder 12 Stunden auseinander.

Der Vorteil, den Sie am meisten schätzen werden, ist, dass das Leben einfacher wird.