it-swarm.com.de

MS SQL Server: Werden mehrere Abfragen in einem Stapel jemals parallel ausgeführt. Wenn ja, was passiert, wenn die zweite Abfrage von der ersten abhängig ist?

Wenn ich einen Stapel von zwei verschiedenen SELECT -Anweisungen habe, können diese dann parallel ausgeführt werden (wenn das SQL Optimizer dies für die effizienteste Ausführungsmethode hält)?

Wenn die erste SELECT - Anweisung in eine temporäre Tabelle ausgewählt wird und die zweite SELECT - Anweisung in dieselbe temporäre Tabelle eingefügt wird, wird dadurch verhindert, dass die beiden Anweisungen ausgeführt werden können parallel?

(Ich vermute, die Antworten sind ja und ja :).

6
J.D.

Stapelanweisungen werden immer nur seriell in der Reihenfolge ausgeführt, in der sie im Stapel erscheinen.

Wenn Sie nun zwei Anweisungen von zwei verschiedenen Stapeln an den Server senden lassen, werden diese unabhängig und im Wesentlichen gleichzeitig ausgeführt (Sperren und Verriegeln beiseite).

Nehmen Sie zum Beispiel den folgenden Code:

CREATE TABLE #t
(
    i int
);

INSERT INTO #t (i) VALUES (0);

Das CREATE TABLE läuft immer vor dem INSERT INTO Aussage. Bedenken Sie:

SELECT 1;

SELECT 2;

Der obige Code wird immer in der richtigen Reihenfolge ausgeführt, d. H. SELECT 1 läuft zuerst , dann, nachdem es abgeschlossen ist, SELECT 2 läuft.

Es gibt mehrere Möglichkeiten, wie unabhängige Stapel gleichzeitig ausgeführt werden können, einschließlich der Verwendung von Multiple Active Result Sets oder MARS , jedoch wirkt sich keiner davon auf die serielle Verarbeitung von Anweisungen innerhalb eines einzelnen Stapels aus.

9
Max Vernon