Führt SQL Server Abfragen parallel aus?

10

Führt SQL Server Abfragen parallel aus? Mit anderen Worten, wenn ich eine schwere Abfrage ausführe, deren Ausführung 10 Sekunden dauert, und gleichzeitig eine weitere schwere Abfrage starte, die 10 Sekunden dauert, wird die zweite Abfrage tatsächlich nach 10 Sekunden gestartet, oder werden beide gleichzeitig gestartet ?

user369117
quelle
1
Keine wirkliche Antwort möglich, lesen Sie mehr über Verbindungspooling und Sperrmechanismen
2
Relevanter, um sich über SQL Server-Worker und den kooperativen Planungsmechanismus IMO zu informieren. Im Allgemeinen lautet die Antwort auf Ihre Frage "Ja".
Martin Smith

Antworten:

14

Du meinst "gleichzeitig". Die Antwort lautet Ja, mit Vorbehalten, die zu weit gefasst sind, um hier diskutiert zu werden. In der Tat ist der springende Punkt von RDBMS die Parallelität.

"Parallel" hat in SQL Server eine genaue Bedeutung: "Eine einzelne Abfrage wird auf mehr als einen Prozessorkern verteilt".

gbn
quelle
6

Solange Ihre erste Abfrage eine in Ihrer zweiten Abfrage benötigte Tabelle nicht sperrt, werden sie parallel ausgeführt.

Ash Burlaczenko
quelle
5

Die Abfragen werden so weit wie möglich parallel ausgeführt.

Die Datenbank verwendet unterschiedliche Sperren zum Lesen und Schreiben für Zeilen, Blöcke oder ganze Tabellen, je nachdem, was Sie tun.

Wenn eine Abfrage nur aus einer Tabelle liest, kann gleichzeitig auch eine andere Abfrage aus derselben Tabelle lesen. Wenn eine Abfrage einige Datensätze in einer Tabelle aktualisiert, kann eine andere Abfrage möglicherweise noch aus der Tabelle lesen, solange keine Datensätze gelesen werden, die für die Aktualisierung gesperrt wurden.

Guffa
quelle
2

Abhängig von Daten - normalerweise werden sie parallel ausgeführt, aber einige Sperrszenarien können dazu führen, dass eine Abfrage auf eine andere wartet. Wenn das Festplattensubsystem schwach ist und Sie nicht über genügend RAM verfügen, werden mehrere Abfragen möglicherweise langsamer ausgeführt.

Arvo
quelle
0

DDL (Data Definition Language) arbeiten parallel wie die SELECT-Anweisung
DML (Data Modified Language) funktioniert nicht parallel wie die INSERT- und UPDATE-Anweisung


quelle
SELECT ist keine DDL-Anweisung
a_horse_with_no_name
-1

Wenn Sie die Abfragen wie unten schreiben, wird sie parallel ausgeführt

SET XACT_ABORT ON
Begin Try
     Begin Tran
        --Your Sql Statement
     Commit Tran
End Try
Begin Catch
    Rollback Tran
End Catch

Hinweis - Ihre parallele Abfrage wird in den Wartezustand versetzt, falls eine Masseneinfügung in eine Tabelle erfolgt

Pankaj
quelle