O SQL Server executa consultas em paralelo?

10

O SQL Server executa consultas em paralelo? Em outras palavras, se eu executar uma consulta pesada que leva 10 segundos para executar e, ao mesmo tempo, iniciar outra consulta pesada que leva 10 segundos, a segunda consulta realmente será iniciada após 10 segundos ou iniciará as duas ao mesmo tempo ?

user369117
fonte
11
nenhuma resposta real possível, leia-se sobre o pool de conexão e mechanisme bloqueio
2
Mais relevante para ler sobre os trabalhadores do SQL Server e o mecanismo de agendamento cooperativo IMO. Em geral, a resposta para sua pergunta é "sim".
Martin Smith

Respostas:

14

Você quer dizer "simultaneamente". A resposta é sim, com advertências que são amplas demais para serem discutidas aqui. De fato, o objetivo principal do RDBMS é a simultaneidade.

"Paralelo" tem um significado preciso no SQL Server: "uma única consulta é distribuída por mais de um núcleo de processador".

gbn
fonte
6

Contanto que sua primeira consulta não bloqueie uma tabela necessária em sua segunda consulta, elas serão executadas em paralelo.

Ash Burlaczenko
fonte
5

As consultas são executadas em paralelo, na medida do possível.

O banco de dados usa bloqueios diferentes para leitura e gravação, em linhas, blocos ou tabelas inteiras, dependendo do que você faz.

Se uma consulta lê apenas de uma tabela, outra consulta também pode ler da mesma tabela ao mesmo tempo. Se uma consulta atualizar alguns registros em uma tabela, outra consulta ainda poderá ler a tabela, desde que não leia nenhum registro bloqueado para a atualização.

Guffa
fonte
2

Depende dos dados - geralmente eles são executados em paralelo, mas alguns cenários de bloqueio podem fazer uma consulta esperar por outra. Obviamente, se o subsistema de disco estiver fraco e você não tiver RAM suficiente, várias consultas poderão ser mais lentas.

Arvo
fonte
0

DDL (linguagem de definição de dados) funciona paralelamente como a instrução SELECT
DML (linguagem modificada de dados) não funciona paralelamente como a instrução INSERT e UPDATE


fonte
SELECT não é uma instrução DDL
a_horse_with_no_name 14/07/19
-1

Se você estiver escrevendo as consultas como abaixo ... será executado paralelamente

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

Nota - Sua consulta paralela entrará no estado de espera, caso haja inserção em massa em uma tabela

Pankaj
fonte