SQL Server esegue query in parallelo?


10

SQL Server esegue query in parallelo? In altre parole, se eseguo una query pesante che impiega 10 secondi per essere eseguita, e allo stesso tempo inizio un'altra query pesante che richiede 10 secondi, la seconda query inizierà effettivamente dopo 10 secondi o avvierà entrambi contemporaneamente ?


1
nessuna vera risposta possibile, leggi il pool di connessioni e il meccanismo di blocco

2
Più pertinente da leggere sui lavoratori di SQL Server e sul meccanismo di pianificazione cooperativa IMO. In generale, la risposta alla tua domanda è "sì".
Martin Smith,

Risposte:


14

Intendi "contemporaneamente". La risposta è sì, con avvertenze che sono troppo ampie per essere discusse qui. In effetti, l'intero punto di RDBMS è la concorrenza.

"Parallelo" ha un significato preciso in SQL Server: "una singola query è distribuita su più di un core del processore".


6

Finché la prima query non blocca una tabella necessaria nella seconda query, verranno eseguite in parallelo.


5

Le query vengono eseguite in parallelo, per quanto possibile.

Il database utilizza blocchi diversi per lettura e scrittura, su righe, blocchi o intere tabelle, a seconda di ciò che si fa.

Se una query legge solo da una tabella, un'altra query può anche leggere dalla stessa tabella contemporaneamente. Se una query aggiorna alcuni record in una tabella, è possibile che un'altra query sia ancora in grado di leggere dalla tabella purché non legga alcun record bloccato per l'aggiornamento.


2

Dipende dai dati: di solito vengono eseguiti in parallelo, ma alcuni scenari di blocco possono far sì che una query ne attenda un'altra. Naturalmente se il sottosistema del disco è debole e la RAM non è sufficiente, è possibile che le query multiple vengano eseguite più lentamente.


0

DDL (linguaggio di definizione dati) funziona in parallelo come l'istruzione SELECT
DML (linguaggio modificato in dati) non funziona in parallelo come l'istruzione INSERT e UPDATE


SELECT non è un'istruzione DDL
a_horse_with_no_name

-1

Se stai scrivendo le domande come sotto ... funzionerà in parallelo

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

Nota : la query parallela entrerà nello stato di attesa nel caso in cui venga inserito un bulk bulk in una tabella

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.