Czy SQL Server wykonuje zapytania równolegle?

10

Czy SQL Server wykonuje zapytania równolegle? Innymi słowy, jeśli uruchomię ciężkie zapytanie, którego wykonanie zajmuje 10 sekund, a jednocześnie rozpocznę kolejne ciężkie zapytanie, które zajmie 10 sekund, czy drugie zapytanie faktycznie rozpocznie się po 10 sekundach, czy zaczną oba jednocześnie ?

użytkownik369117
źródło
1
nie jest możliwa prawdziwa odpowiedź, poczytaj o mechanizmie łączenia i blokowania połączeń
2
Bardziej istotne, aby przeczytać o pracownikach SQL Server i mechanizm planowania współpracy IMO. Zasadniczo odpowiedź na twoje pytanie brzmi „tak”.
Martin Smith

Odpowiedzi:

14

Masz na myśli „jednocześnie”. Odpowiedź brzmi: tak, z zastrzeżeniami, które są zbyt szerokie, aby je tutaj omawiać. W rzeczywistości cały punkt RDBMS to współbieżność.

„Parallel” ma dokładne znaczenie w SQL Server: „jedno zapytanie jest rozłożone na więcej niż jeden rdzeń procesora”.

gbn
źródło
6

Dopóki twoje pierwsze zapytanie nie zablokuje tabeli potrzebnej w drugim zapytaniu, będą one działać równolegle.

Ash Burlaczenko
źródło
5

Zapytania są uruchamiane równolegle, w miarę możliwości.

Baza danych używa różnych blokad do odczytu i zapisu, w wierszach, blokach lub całych tabelach, w zależności od tego, co robisz.

Jeśli jedno zapytanie odczytuje tylko z tabeli, inne zapytanie może również czytać z tej samej tabeli w tym samym czasie. Jeśli jedno zapytanie aktualizuje niektóre rekordy w tabeli, inne zapytanie może nadal być w stanie odczytać z tabeli, o ile nie odczytuje żadnych rekordów zablokowanych dla aktualizacji.

Guffa
źródło
2

Zależy od danych - zwykle działają one równolegle, ale niektóre scenariusze blokowania mogą powodować, że jedno zapytanie czeka na drugie. Oczywiście, jeśli podsystem dyskowy jest słaby i nie masz dużo pamięci RAM, wiele zapytań może działać wolniej.

Arvo
źródło
0

DDL (język definicji danych) działa równolegle jak instrukcja SELECT
DML (język modyfikacji danych) nie działa równolegle jak instrukcja INSERT i UPDATE


źródło
SELECT nie jest instrukcją DDL
a_horse_w_na_name
-1

Jeśli piszesz zapytania jak poniżej ... będzie działać równolegle

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

Uwaga - Twoje równoległe zapytanie pojawi się w stanie oczekiwania na wypadek, gdyby jakaś wstawka zbiorcza w tabeli

Pankaj
źródło