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 ?
sql-server
user369117
quelle
quelle
Antworten:
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".
quelle
Solange Ihre erste Abfrage eine in Ihrer zweiten Abfrage benötigte Tabelle nicht sperrt, werden sie parallel ausgeführt.
quelle
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.
quelle
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.
quelle
DDL (Data Definition Language) arbeiten parallel wie die SELECT-Anweisung
DML (Data Modified Language) funktioniert nicht parallel wie die INSERT- und UPDATE-Anweisung
quelle
Wenn Sie die Abfragen wie unten schreiben, wird sie parallel ausgeführt
Hinweis - Ihre parallele Abfrage wird in den Wartezustand versetzt, falls eine Masseneinfügung in eine Tabelle erfolgt
quelle