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 ?


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”.


6

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


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.


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.


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


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

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.